<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>缓存 &#8211; mylogs.cn</title>
	<atom:link href="https://mylogs.cn/tag/%e7%bc%93%e5%ad%98/feed/" rel="self" type="application/rss+xml" />
	<link>https://mylogs.cn</link>
	<description>发现、记录、分享</description>
	<lastBuildDate>Wed, 12 Aug 2026 16:11:12 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>路由器开 DNS 缓存，重复解析从 24ms 降到 1ms</title>
		<link>https://mylogs.cn/%e8%b7%af%e7%94%b1%e5%99%a8%e5%bc%80-dns-%e7%bc%93%e5%ad%98%ef%bc%8c%e9%87%8d%e5%a4%8d%e8%a7%a3%e6%9e%90%e4%bb%8e-24ms-%e9%99%8d%e5%88%b0-1ms/</link>
		
		<dc:creator><![CDATA[steve, zhang]]></dc:creator>
		<pubDate>Wed, 12 Aug 2026 16:11:12 +0000</pubDate>
				<category><![CDATA[经验与技巧]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[OpenWRT]]></category>
		<category><![CDATA[缓存]]></category>
		<category><![CDATA[网络优化]]></category>
		<category><![CDATA[路由器]]></category>
		<guid isPermaLink="false">https://mylogs.cn/%e8%b7%af%e7%94%b1%e5%99%a8%e5%bc%80-dns-%e7%bc%93%e5%ad%98%ef%bc%8c%e9%87%8d%e5%a4%8d%e8%a7%a3%e6%9e%90%e4%bb%8e-24ms-%e9%99%8d%e5%88%b0-1ms/</guid>

					<description><![CDATA[打开一个网页，浏览器背后往往要做几十次 DNS 查询：主站域名、图片、统计脚本、广告、CDN 节点，每一项都要 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">打开一个网页，浏览器背后往往要做几十次 DNS 查询：主站域名、图片、统计脚本、广告、CDN 节点，每一项都要先问一次域名服务器「这个网址对应哪个 IP」。每一次查询都要走一段网络往返，在跨运营商、跨境或卫星等延迟偏高的链路上，几十次查询叠加起来，页面还没开始下载就先卡了好几秒。系统或浏览器本身会缓存答案，但缓存只留在这一台设备上，家里其他手机、电视、电脑并不能共享。MakeUseOf 撰稿人 Gregory Gibson 在自用网络里实测发现，把 DNS 缓存放到路由器这一层，全屋设备都能共用同一份结果，重复查询的中位数从 24.35 毫秒降到了 0.98 毫秒。</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a7c9baea02de&quot;}" data-wp-interactive="core/image" data-wp-key="6a7c9baea02de" class="wp-block-image size-large aligncenter wp-lightbox-container"><img fetchpriority="high" decoding="async" width="1200" height="800" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://mylogs.cn/wp-content/uploads/2026/08/a1500fc123049a99ef94daf55218e928_header.webp" alt="路由器开 DNS 缓存，重复解析从 24ms 降到 1ms" class="wp-image-4604" style="max-width:100%;height:auto;" srcset="https://mylogs.cn/wp-content/uploads/2026/08/a1500fc123049a99ef94daf55218e928_header.webp 1200w, https://mylogs.cn/wp-content/uploads/2026/08/a1500fc123049a99ef94daf55218e928_header-300x200.webp 300w, https://mylogs.cn/wp-content/uploads/2026/08/a1500fc123049a99ef94daf55218e928_header-1024x683.webp 1024w, https://mylogs.cn/wp-content/uploads/2026/08/a1500fc123049a99ef94daf55218e928_header-768x512.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">图片来源：MakeUseOf</figcaption></figure>





<h2 class="wp-block-heading">一、在路由器上打开 dnsmasq 缓存（以 OpenWRT 为例）</h2>



<p class="wp-block-paragraph">多数能刷机的路由器（OpenWRT、梅林固件等）都由 dnsmasq 提供 DNS 服务，直接在路由器上开缓存即可让整网受益。</p>



<ol class="wp-block-list"><li>通过 SSH 登录路由器，先把上游 DNS 固定为单一公共解析器（如 1.1.1.1），并让 dnsmasq 忽略系统自动生成的 resolv 文件，避免「缓存套缓存」干扰效果：</li></ol>



<p class="wp-block-paragraph"><code>uci add_list dhcp.@dnsmasq[0].server='1.1.1.1'</code></p>



<p class="wp-block-paragraph"><code>uci set dhcp.@dnsmasq[0].noresolv='1'</code></p>



<ol class="wp-block-list"><li>先设一份「零缓存」基线便于对照：<code>uci set dhcp.@dnsmasq[0].cachesize='0'</code>，并打开查询日志：<code>uci set dhcp.@dnsmasq[0].logqueries='1'</code>。</li><li>保存并重启使配置生效：<code>uci commit dhcp</code>，再执行 <code>service dnsmasq restart</code>。</li><li>正式开启缓存，把容量调到 1000 条：<code>uci set dhcp.@dnsmasq[0].cachesize='1000'</code>，再次 <code>uci commit dhcp</code> 并 <code>service dnsmasq restart</code>。</li></ol>



<h2 class="wp-block-heading">二、别忘了缓存 HTTPS 记录</h2>



<p class="wp-block-paragraph">dnsmasq 默认只缓存 A、AAAA、CNAME、SRV 这几类记录，而现代浏览器会用 HTTPS 记录来协商 HTTP/3 等能力。若只缓存了 IP，Firefox 等浏览器仍会反复向上游询问 HTTPS 记录。补一条规则即可：</p>



<p class="wp-block-paragraph"><code>uci add_list dhcp.@dnsmasq[0].cache_rr='HTTPS'</code></p>



<p class="wp-block-paragraph">保存重启后，一次预热请求就能把页面的 HTTPS、A、AAAA 记录一并缓存。</p>



<h2 class="wp-block-heading">三、验证效果</h2>



<p class="wp-block-paragraph">可用 <code>nslookup openwrt.org. 192.168.24.254</code>（换成自家路由器 LAN 口 IP）查看，或翻看 dnsmasq 日志里的 query／cached 标记。实测中，MakeUseOf 首页在关闭缓存时产生了 190 次查询、跨 58 个主机名；开启并预热后只剩 45 次、14 个主机名，整页加载时间缩短约 47%（首字节 641ms→385ms，完全加载 7.04s→3.72s）。</p>



<h2 class="wp-block-heading">注意事项</h2>



<p class="wp-block-paragraph">需提醒的是，DNS 缓存并不能让整张网页变快——TLS 握手、服务器处理、脚本与图片下载仍是瓶颈，缓存只是去掉了「反复问同一个问题」这段等待。缓存本身有时效，记录到期后 dnsmasq 会自动重新向上游查询，属正常行为。另外，浏览器若开启 DoH（DNS over HTTPS）会绕开路由器设置，测试或追求稳定效果时可在浏览器设置里临时关闭。国产路由器若未开放 SSH，也可在管理页寻找「DNS 缓存／缓存大小」相关选项，原理一致。</p>



<p class="wp-block-paragraph">来源：MakeUseOf</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
