squid

 

现状:

   目前网站的首页、产品详情页、 CMS 页都经过了 Squid 进行页面缓存。目前设置缓存有效期为 2 小时,缓存命中率约 60% 左右。

这意味着另外约 40% 的页面响应可能较慢。当系统 down 机时,约 40% 相关页面无法正常访问。

 

主动更新:

   很多系统的 squid 缓存都采用主动更新机制,如维基百科。

   Squid 支持一种 PURGE 机制,删除指定 URL 的缓存。再次请求即获得页面最新内容。

 

改进方案:

   Squid 缓存有效期设置为 48 小时。每小时更新一次首页,每半小时检查有数据变化的详情页和 CMS 页进行主动更新。

每天凌晨 3~5 点钟进行全站主动更新。

   这样缓存命中率完全可以提高到 99% 以上,用户访问响应更快,系统 down 机时相关页面仍能访问。

 

优点:

   该方案基本不涉及复杂逻辑,即使程序 bug 也只是页面未及时更新,基本无风险。

 

参考文档 :

   http://home.arcor.de/pangj/squid/

   http://www.iteye.com/topic/399149

 

 

很好的机会。

 

简单的基于时间的被动更新策略,确实会存在缓存过期后,更新缓存的请求比较慢,甚至出现不可用的情况,

并且很多情况下数据没有变化,是不需要更新缓存的,但还是做了无谓的刷新。

 

如果要改为纯主动更新策略,即前台只访问缓存,不触发更新缓存,可以保证 Down 机后,所有页面都可以访问,理论上缓存命中 100%

但这个需要保证所有的 entry 都“主动”刷到缓存里面了,并且新增的 entry 要实时进入缓存,这个不太现实,因为很多地方需要触发缓存更新。

 

所以最好使用主动 + 被动更新结合的方式,就是龙辉讲的做法,理论上只有新的 entry 需要被动触发更新,其他的请求都会命中缓存,

此时如果系统 Down 机,新增的 Entry 还是不能访问的,不过这个几率是很小的,就在龙辉讲的 1 % 里面的 1% J

 

 

“每半小时检查有数据变化的详情页和 CMS 页进行主动更新”

这一步需要考虑全面,如果有遗漏,这部分的信息的变化最坏要等到要等24 小时以后全量更新缓存时才能更新。

 

在 Squid 3.0 版本下.就这一句就可以了..

./squidclient -r "http://www.gznow.cn/"

更多的参数使用,可以查看 ./squidclient -h

你可能感兴趣的:(qui)