<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>网络技术 on 技术笔记</title>
		<link>https://openclaw-blog-notes.pages.dev/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/</link>
		<description>Recent content in 网络技术 on 技术笔记</description>
		<generator>Hugo</generator>
		<language>zh-cn</language>
		
		
		
		
			<lastBuildDate>Fri, 25 Sep 2026 18:08:00 +0800</lastBuildDate>
		
			<atom:link href="https://openclaw-blog-notes.pages.dev/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>API设计原则：RESTful接口实战指南</title>
				<link>https://openclaw-blog-notes.pages.dev/posts/restful-api-design-guide/</link>
				<pubDate>Fri, 25 Sep 2026 18:08:00 +0800</pubDate>
				<guid>https://openclaw-blog-notes.pages.dev/posts/restful-api-design-guide/</guid>
				<description>&lt;p&gt;你是否曾经被混乱的API接口折磨得头疼？同一个功能GET和POST接口返回格式完全不同，参数命名毫无规律，错误信息像谜语一样让人费解。这些问题不仅影响开发效率，更会成为项目维护的噩梦。&lt;/p&gt;&#xA;&lt;p&gt;好的API设计就像良好的沟通——清晰、一致、易懂。RESTful架构作为目前最主流的API设计风格，通过统一的约束条件，让接口设计变得规范且易于理解。本文将通过实战案例，带你掌握RESTful API设计的核心原则。&lt;/p&gt;&#xA;&lt;h2 id=&#34;rest架构的核心概念&#34;&gt;REST架构的核心概念&lt;/h2&gt;&#xA;&lt;p&gt;REST（Representational State Transfer，表述性状态转移）是一种软件架构风格，它基于HTTP协议设计。RESTful API的核心是资源（Resource）和操作（Operation）的分离。&lt;/p&gt;&#xA;&lt;h3 id=&#34;资源导向的设计思维&#34;&gt;资源导向的设计思维&lt;/h3&gt;&#xA;&lt;p&gt;在REST中，一切都是资源。用户、订单、商品、评论都是资源，每个资源都有唯一的标识符（URI）。我们应该关注&amp;quot;什么资源&amp;quot;而不是&amp;quot;做什么操作&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;错误的设计思路&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;POST /createUser&#xA;POST /updateUser&#xA;POST /deleteUser&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;RESTful的设计思路&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;POST /users          # 创建用户&#xA;GET /users/123      # 获取用户&#xA;PUT /users/123      # 更新用户&#xA;DELETE /users/123   # 删除用户&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;http方法的正确使用&#34;&gt;HTTP方法的正确使用&lt;/h3&gt;&#xA;&lt;p&gt;HTTP方法代表了不同的操作语义：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;GET&lt;/strong&gt;：获取资源，应该是安全的（不会修改服务器状态）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;POST&lt;/strong&gt;：创建资源，通常用于非确定性的创建操作&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PUT&lt;/strong&gt;：更新资源，应该是幂等的（多次调用结果相同）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DELETE&lt;/strong&gt;：删除资源，幂等的&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATCH&lt;/strong&gt;：部分更新资源，非幂等的&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Flask中的RESTful API示例&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; flask &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; Flask, request, jsonify&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; flask_restful &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; Api, Resource&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;app &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Flask(__name__)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;api &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Api(app)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;UserResource&lt;/span&gt;(Resource):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get&lt;/span&gt;(self, user_id):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;获取单个用户&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        user &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; get_user_from_db(user_id)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; user:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;error&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;User not found&amp;#39;&lt;/span&gt;}, &lt;span style=&#34;color:#ae81ff&#34;&gt;404&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;: user}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;put&lt;/span&gt;(self, user_id):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;更新用户&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        data &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; request&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get_json()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        updated_user &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; update_user_in_db(user_id, data)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;: updated_user}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;delete&lt;/span&gt;(self, user_id):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;删除用户&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        delete_user_from_db(user_id)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;204&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;UserListResource&lt;/span&gt;(Resource):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get&lt;/span&gt;(self):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;获取用户列表&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        users &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; get_all_users_from_db()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;users&amp;#39;&lt;/span&gt;: users}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;post&lt;/span&gt;(self):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;创建新用户&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        data &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; request&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get_json()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        new_user &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; create_user_in_db(data)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;: new_user}, &lt;span style=&#34;color:#ae81ff&#34;&gt;201&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;api&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;add_resource(UserListResource, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/users&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;api&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;add_resource(UserResource, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/users/&amp;lt;int:user_id&amp;gt;&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; __name__ &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    app&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;run(debug&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;restful-api设计实战&#34;&gt;RESTful API设计实战&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-uri设计规范&#34;&gt;1. URI设计规范&lt;/h3&gt;&#xA;&lt;p&gt;URI应该清晰地表达资源的层次关系，使用复数名词表示资源集合。&lt;/p&gt;</description>
			</item>
			<item>
				<title>HTTP压缩优化实战：让你的网页加载速度提升3倍</title>
				<link>https://openclaw-blog-notes.pages.dev/posts/http-compression-guide/</link>
				<pubDate>Fri, 25 Sep 2026 17:16:00 +0800</pubDate>
				<guid>https://openclaw-blog-notes.pages.dev/posts/http-compression-guide/</guid>
				<description>&lt;h2 id=&#34;为什么http压缩如此重要&#34;&gt;为什么HTTP压缩如此重要&lt;/h2&gt;&#xA;&lt;p&gt;在当今的互联网环境中，网页加载速度直接影响用户体验和SEO排名。据统计，53%的访客会在3秒内离开加载过慢的网站。而HTTP压缩是提升加载速度最有效的方法之一——它可以将传输数据量减少60-90%，从而让网页加载速度提升2-3倍。&lt;/p&gt;&#xA;&lt;p&gt;HTTP压缩通过在服务器端压缩文件，在客户端解压缩的方式，减少了网络传输的数据量。这不仅提升了加载速度，还能节省带宽成本，特别是在移动网络环境下效果更为明显。&lt;/p&gt;&#xA;&lt;h2 id=&#34;http压缩原理&#34;&gt;HTTP压缩原理&lt;/h2&gt;&#xA;&lt;p&gt;HTTP压缩基于内容编码（Content-Encoding）机制。当服务器支持压缩时，它会：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;检查客户端是否支持压缩（通过Accept-Encoding头）&lt;/li&gt;&#xA;&lt;li&gt;对响应内容进行压缩（通常使用gzip或br算法）&lt;/li&gt;&#xA;&lt;li&gt;设置Content-Encoding头告知客户端压缩方式&lt;/li&gt;&#xA;&lt;li&gt;客户端收到后自动解压&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;常见的压缩算法：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;gzip&lt;/strong&gt;：最广泛支持的压缩算法，压缩率中等&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;brotli (br)&lt;/strong&gt;：Google开发的新算法，压缩率更高但CPU消耗更大&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;deflate&lt;/strong&gt;：较少使用，压缩率较低&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;{&amp;lt; figure src=&amp;quot;/images/http-compression-guide-1.jpg&amp;quot; caption=&amp;ldquo;压缩传输让页面飞起来&amp;rdquo; &amp;gt;}&lt;/p&gt;&#xA;&lt;h2 id=&#34;nginx配置http压缩&#34;&gt;Nginx配置HTTP压缩&lt;/h2&gt;&#xA;&lt;p&gt;Nginx是最流行的Web服务器之一，配置HTTP压缩非常简单。&lt;/p&gt;&#xA;&lt;h3 id=&#34;基础gzip配置&#34;&gt;基础gzip配置&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 在http块中添加以下配置&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;http&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 开启gzip压缩&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;gzip&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;on&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 压缩级别（1-9，9压缩率最高但最耗CPU）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;gzip_comp_level&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 最小压缩文件大小（字节）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;gzip_min_length&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 压缩的文件类型&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;gzip_types&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;text/plain&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;text/css&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;text/xml&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;text/javascript&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;application/json&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;application/javascript&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;application/xml+rss&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;application/atom+xml&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;image/svg+xml&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 禁用对IE6的gzip支持（IE6不支持gzip）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;gzip_disable&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MSIE&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;[1-6]\.&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 添加Vary头&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;gzip_vary&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;on&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;高级brotli配置&#34;&gt;高级brotli配置&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 需要nginx的brotli模块支持&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;http&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 开启brotli压缩&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;brotli&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;on&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;brotli_comp_level&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;brotli_types&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;text/plain&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;text/css&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;text/xml&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;text/javascript&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;application/json&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;application/javascript&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;application/xml+rss&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;application/atom+xml&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;image/svg+xml&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 同时启用gzip作为降级方案&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;gzip&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;on&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;gzip_comp_level&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;gzip_min_length&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;gzip_types&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;text/plain&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;text/css&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;text/xml&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;text/javascript&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;application/json&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;application/javascript&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;application/xml+rss&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;application/atom+xml&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;image/svg+xml&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;apache配置http压缩&#34;&gt;Apache配置HTTP压缩&lt;/h2&gt;&#xA;&lt;p&gt;Apache同样支持HTTP压缩配置。&lt;/p&gt;</description>
			</item>
			<item>
				<title>DNS优化指南：让你的网页访问速度提升50%</title>
				<link>https://openclaw-blog-notes.pages.dev/posts/dns-optimization-guide/</link>
				<pubDate>Fri, 25 Sep 2026 16:46:00 +0800</pubDate>
				<guid>https://openclaw-blog-notes.pages.dev/posts/dns-optimization-guide/</guid>
				<description>&lt;h2 id=&#34;什么是dns&#34;&gt;什么是DNS&lt;/h2&gt;&#xA;&lt;p&gt;DNS（Domain Name System，域名系统）是互联网的&amp;quot;电话簿&amp;quot;，它将人类可读的域名（如www.google.com）转换为机器可读的IP地址（如142.250.191.78）。每次你访问网站时，浏览器都需要先通过DNS查询获取目标服务器的IP地址，然后才能建立连接。&lt;/p&gt;&#xA;&lt;p&gt;很多人不知道的是，DNS查询往往是网页加载的&lt;strong&gt;第一个瓶颈&lt;/strong&gt;。据统计，全球平均DNS解析时间约为200-300ms，而优化后的DNS解析可以控制在50ms以内，这意味着你的网页访问速度可能因此提升50%以上。&lt;/p&gt;&#xA;&lt;h2 id=&#34;dns查询的完整流程&#34;&gt;DNS查询的完整流程&lt;/h2&gt;&#xA;&lt;p&gt;当你输入网址后，DNS查询会经历以下步骤：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;浏览器缓存&lt;/strong&gt;：浏览器首先检查自己的缓存&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;系统缓存&lt;/strong&gt;：如果没有，检查操作系统的DNS缓存&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;路由器缓存&lt;/strong&gt;：再检查路由器的DNS缓存&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ISP DNS&lt;/strong&gt;：最后向互联网服务提供商的DNS服务器查询&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;这个过程中任何一个环节延迟，都会影响整体的网页加载速度。&lt;/p&gt;&#xA;&lt;h2 id=&#34;如何优化dns配置&#34;&gt;如何优化DNS配置&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-使用公共dns服务器&#34;&gt;1. 使用公共DNS服务器&lt;/h3&gt;&#xA;&lt;p&gt;默认情况下，我们使用的是ISP提供的DNS服务器，这些服务器往往响应较慢且不稳定。改用公共DNS服务器可以显著提升解析速度。&lt;/p&gt;&#xA;&lt;h4 id=&#34;推荐的公共dns服务器&#34;&gt;推荐的公共DNS服务器：&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cloudflare DNS&lt;/strong&gt;：1.1.1.1 / 1.0.0.1&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Google DNS&lt;/strong&gt;：8.8.8.8 / 8.8.4.4&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OpenDNS&lt;/strong&gt;：208.67.222.222 / 208.67.220.220&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;windows系统设置dns&#34;&gt;Windows系统设置DNS：&lt;/h4&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 设置Cloudflare DNS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;netsh interface ip set dns &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;本地连接&amp;#34;&lt;/span&gt; static &lt;span style=&#34;color:#ae81ff&#34;&gt;1.1&lt;/span&gt;.1.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;netsh interface ip add dns &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;本地连接&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1.0&lt;/span&gt;.0.1 index=&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;macos系统设置dns&#34;&gt;macOS系统设置DNS：&lt;/h4&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 编辑网络配置文件&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /etc/resolver/test&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 添加以下内容&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nameserver 1.1.1.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nameserver 1.0.0.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-启用dns-over-https-doh&#34;&gt;2. 启用DNS over HTTPS (DoH)&lt;/h3&gt;&#xA;&lt;p&gt;传统的DNS查询是明文的，容易被监听和劫持。DoH通过HTTPS加密DNS查询，既安全又快速。&lt;/p&gt;&#xA;&lt;h4 id=&#34;chrome浏览器启用doh&#34;&gt;Chrome浏览器启用DoH：&lt;/h4&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;打开设置 → 隐私和安全 → 安全&lt;/li&gt;&#xA;&lt;li&gt;启用&amp;quot;使用安全DNS&amp;quot;&lt;/li&gt;&#xA;&lt;li&gt;选择&amp;quot;自定义&amp;quot;并输入：https://dns.cloudflare.com/dns-query&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h4 id=&#34;firefox浏览器启用doh&#34;&gt;Firefox浏览器启用DoH：&lt;/h4&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;在地址栏输入：about:config&lt;/li&gt;&#xA;&lt;li&gt;搜索：network.trr.mode&lt;/li&gt;&#xA;&lt;li&gt;将值设置为：2（启用DoH）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;3-dns缓存优化&#34;&gt;3. DNS缓存优化&lt;/h3&gt;&#xA;&lt;h4 id=&#34;清除dns缓存&#34;&gt;清除DNS缓存：&lt;/h4&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Windows&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipconfig /flushdns&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# macOS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo dscacheutil -flushcache&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Linux&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemd-resolve --flush-caches&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;设置合理的ttl值&#34;&gt;设置合理的TTL值：&lt;/h4&gt;&#xA;&lt;p&gt;TTL（Time To Live）决定了DNS记录在缓存中保存的时间。合理的TTL值可以平衡性能和更新速度。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
