缓存内容VS不可缓存内容 TTL值过高并非总是好事

来源:互联网 发布:颜值高帅哥多的网络剧 编辑:程序博客网 时间:2024/04/29 05:02

  就aiCache而言,响应内容可以被归为两大类别,即可缓存的与不可缓存的。我们也可以这样理解,可缓存的内容可以被共享,而不可缓存的内容无法共享,即使缓存下来内容也是无效的。
  在您的网站上,某些内容可能以五秒一次或一分钟一次的速度频繁地发生变化,而其它一些内容可能不会更新得如此之快,还有一些大概一天才变化一次等等。
  我们需要配置aiCache,保证它始终缓存最新的信息以将缓存效用发挥最大,优化包括用户能直接感受到的网站性能在内的整体运作情况,减少网站基础设施的负载,并最终降低配置各种新的软硬件的花费。
  在之前那个www.acmenews.com网站的例子中,大多数的内容都是可缓存的,我们有理由期望缓存命中率高达95%,这取决于通信量分布情况。
  例如,如果对某网站主页每秒有一百个的请求,而我们可以对主页内容缓存20秒,那么结果就是这20秒内,只有一个请求由原始服务器进行服务,而有20×100-1=1999个请求直接从aiCache缓存中得到响应。而实际上,这时的缓存率已经接近100%。请您注意了,我们做到了把到原始服务器的网络流量降低了接近2000倍,而这仅是对那一个特定的URL而言的!当然啦,如果对那个URL每秒只有十个请求,服务器的网络流量也“只会”减少200倍。
  另外很明显,如果一个网站上大部分的内容都可以以类似的方式进行缓存,原始服务器的负载可以基本降为零。
  然而,当我们进行缓存时间的设置时,要注意不能失控。如你所了解的一样,缓存那些用户请求频率较高的URL已经使我们受益匪浅!由于aiCache允许下行数据缓存的时间和TTL值相同。它可以将CSS和JS文件的缓存延长至一小时。所以当用户访问您的网站时,他们的浏览器无需在每次访问不同页面时再刷新附属内容。
  但如果缓存时间被设置为一天,你就无法在一段合理的时间对网站内容进行刷新。也就是说,当你对原始服务器上JS或CSS文件进行修改后,同样要过24小时aiCache上的缓存内容才会更新,用户的浏览器才会接收到更改后的内容。当然啦,如果你能不断地对辅助内容(aiCache存储在RAM上的内容)进行更新,上述情况也不至于那么糟。虽然,你总可以通过CLI强制终止aiCache在RAM上缓存的内容,但用户的浏览器又是另一码事了,你又不致于在你的主页上挂上醒目的“强制刷新”的标识。另一个不要将TTL值设太高的原因虽然没有上一个那么明显,但同样重要。假设由于原始服务器基础架构某处出错或发生故障,传输了一个不完整的或无效的CSS或JavaScript文档,并被aiCache和用户浏览器缓存。同样,若此时TTL设置过高,错误的文档也要经过很长时间才能被清除。
  所以,我们从以上两个例子得出的结论是——在JS和CSS文档的TTLs设置值上不要走极端。一般设为30分钟或一小时,这样可及时对辅助内容进行修改,使你的网站不会出现内容更新和错误更改过慢的问题。
  有人可能会认为图像文件是另一种story,可能不会受到影响。的确,那些从来无需更改的图像可以被缓存较长的时间(比如一个多星期),比如普通的1×1.gif或那类属性的文件。然而,我们上面的警示对照片的情况依然奏效。只有设置了恰当的的TTLs值,你才能在合理的时间内撤回/改变/终止一张照片。当然,把一张不受欢迎的图片从网站清除的办法总是有的,比如将其从HTML代码中删除,但我们希望您尽量听取建议。

原创粉丝点击