一个提高 CDN 缓存命中率小技巧

in #cn7 years ago

说起 CDN 来对明月来说可以说是熟的不能再熟了都,为了选择一个适合自己站点的免费 CDN 几乎试遍了所有主流的 CDN,明月自己都不记得使用过多少种 CDN 了,常规的、另类的、冷门儿的几乎是所有了!后来又赶上明月所有站点部署 HTTPS,这又是一番各种 CDN 的折腾,可以说明月对 CDN 的了解算是骨灰级了。

image.png

今天就给大家分享个最近一个月明月一直在用的提高 CDN 缓存命中率的小技巧,算是一次经验分享吧,使用 CDN 主要目的其实就是为了提高网站访问速度,让每个用户在访问站点的时候自动调用离用户最近的 CDN 节点上缓存来实现加速访问,那么 CDN 节点上缓存的内容越多回源请求就越少,用户的浏览时调取网站资源效率也就越高效,表现到前端就是访问速度的提升了,对服务器负载来说也是一种“减负”,常见的一般使用 CDN 都建议大家将静态文件(比如:JS/CSS/图片)缓存到 CDN 来加快站点的载入, WordPress 、 Typecho 这类动态博客站点一般都不建议大家缓存.html 文件,主要就是因为动态博客平台的.html 其实是一种针对前端“伪静态化”,主要是为了便于搜索引擎 SEO 的(虽然搜索引擎目前已经完全可以识别动态链接了,但是大家都习惯了.html/htm 后缀静态化文件方式也就给保持下来了,再去换回动态链接形式很明显是个得不偿失的事儿),其本质上还是需要一些动态数据运算的支撑的,像评论/评论数量、浏览次数等等,对于 WordPress 、 Typecho 这类博客平台来说一旦 CDN 缓存了.html 后就会出现无法显示实时评论了,这对于一个互动性要求比较高的博客来说是很不利的,所以一般都只建议大家 CDN 缓存纯静态文件 JS/CSS/图片即可,这样以来 CDN 缓存命中率自然也就受制于缓存内容的局限就不会很高了,最高 50%都算是了不得的了。

image.png

今天分享给大家的这个小技巧算是一个折中的方案,既能缓存.html 提高 CDN 缓存命中率,又能不过多影响前端用户评论留言时效性,明月试用了一个多月了效果还是很显著的,甚至结合服务器端的 WAF 防火墙普通手法的 CC/DDOS 都可以阻挡(当然这需要一定的服务器运维手法的,新手小白就不要尝试了)。具体实现其实很简单就是借用明月分享过的一个神器【Windows 系系统优化垃圾清理必备神器 Dism++】一文中的这个 Dism++ 工具了。原理说起来很简单就是借助 Windows 的 hosts 文件来强制站长自己的电脑访问我们的博客时回源不受 CDN 的影响,无论是保持博客登录状态还是实时评论的显示、回复都不受影响,这样就可以放心大胆的让 CDN 缓存伪静态的.html 文件来加速网页载入时间,至于 CDN 缓存命中率自然也就提升了。

image.png

具体实施方法,运行 Dism++神器,选中左边“工具”里的“编辑 hosts”打开 Windows 的 hosts 文件将自己博客站点的 IP+域名的方式添加到最后一行,如:

123.123.123.123 www.mydomain.com

注意 IP 和域名之间至少有一个空格哦!

这样你电脑访问这个博客站点的时候就被固定使用 IP 地址 123.123.123.123 来访问了,不会被分配到离你最近的 CDN 节点调用缓存数据,一切都是直接回源服务器来访问。包括站点站长的后台登陆 Cookie 都不会失效和变化,当然了仅限当前使用的这个电脑了,更换电脑后这个效果就失效了。

image.png

自己使用的电脑强制回源服务器主要是为了方便站长自己对站点的更新和维护,在 CDN 的缓存设置里就可以给.html 进行缓存,但是明月建议这个缓存时间以 10-15 分钟为宜,时间过久对评论的实时性会有影响从而造成用户浏览评论体验下降。

image.png

这样下来使用一段时间后你就会发现你的 CDN 统计里的 CDN 命中率会有一个大幅的增加,命中率几乎都在 70%以上了。同样的想取消也很简单只需要在 hosts 里删除这一行保存即可, Windows 10 下是实时的,其他版本建议重启后生效。

具体的效果,大家可以自行体验调整了,这个方法比较适合博客站长使用,但是对于那些设定为多用户或者必须注册登录的博客站点可能会有些兼容性的问题(这也是为啥明月一直不建议个人博客搞注册登录,兼容稳定性真的是太差了,维护成本很高的,很不划算!)

Sort:  

Do you want me to resteem your post to my 35,000+ followers? https://steemit.com/@a-0-0

Coin Marketplace

STEEM 0.26
TRX 0.20
JST 0.038
BTC 95832.71
ETH 3561.59
USDT 1.00
SBD 3.85