通过curl来模拟用户操作达到提前缓存的目的

Head Pic: background, scenery, original / r - pixiv

预缓存

一开始看到张戈博客的一篇文章介绍了预缓存和脚本,发现蛮有道理的。

预缓存就是你提前访问位于CDN节点上的网站,然后后面的人再访问的话,CDN节点就可以不用再去请求源站,而是直接返回内容,当然一些CDN服务商就有自己的预热缓存提交接口,但是一般都有次数频率等限制。所以就有了这个小程式,直接模拟用户访问来达到预缓存。

注意:cloudflare免费版等CDN节点之间缓存是不同步的,即一个节点缓存了,另一个节点不会同步更新。

那么问题来了,既然节点不同步,那这个程式还有什么意义呢。当然,虽然节点不会同步更新,但是只要你的内容被缓存到了其中一个节点,另外的节点就可以在他们的CDN内抓取数据,而不用走源站了。(这个具体我没有条件测试,但是根据网路上其他人的测试是这样的)

好了,既然理论部分搞定,我们就只需要找个curl库再加上java fx,一气呵成,这个程式就完成啦。(雾)

Website-Precache

其实张戈博客那片文章里面的脚本也很好使用,但是我不想再为客户机跑一个脚本去装python,并且服务器端hosts有改动,所以很尴尬的就出现了这个Java版的。

因为使用纯Java实现的curl库,所以速度肯定比不过系统自带的了。

当然刚刚完成的程式比较简陋,从它的UI和提示信息就可以发现了。

当然我会持续开发的,虽然现在基本功能已经完备了。

原理

CDN在缓存的时候,http header里面就会带有是否缓存的标志,比如Cloudflare和百度云加速的就是cf-cache-status(百度连请求头都不改的,估计直接运行cloudflare的程式)。

常见的值有:HIT(命中),MISS(未命中),EXPIRED(过期),DYNAMIC(动态)

所以我们只需要检查其中的值即可。

最后修改:2020-03-06 18:30:49