Fikker首页 -> 帮助系统 -> 如何进一步提升缓存命中率

1、命中过程:

设置好缓存后,第一次访问的页面,会被缓存起来,是不会被命中的。第二次被访问的时候,会先检查内存(为一级快速缓存)中有无这个页面,如果内存中无,会再检查硬盘上有无此页面,如果有此页面,还会检查此页面是否已经过期,如果在缓存周期内,会直接发送给用户;如果缓存周期已经到了,则检查源站是否有更新,如果无更新,则直接发送已经缓存的页面给用户;如果源站页面有更新,则会发送最新的页面给用户,并且将旧缓存给替换掉。

2、经验之谈   

一般情况下,静态资源多的网站,例如图片站,资源站,下载站等一般命中率都较高,因为这些页面资源基本上都不太经常被修改(Modified),缓存后能不断被重复用(Re-used),命中率普遍在90%以上。相反的,动态资源较多的站点,命中率会低一些,因为这些动态页面经常被源站重新生成(Re-generated),而且设置的缓存周期普遍也很短,并且很多页面可能需要拒绝缓存才可以,会造成命中率会低一些。

3、影响缓存命中率的几个常见因素     

a. 缓存比例:就是用户频繁访问的页面,越频繁的页面越是如此,除去必须拒绝缓存的动态页面外,例如后台管理页面等等,其它的公共访问页面尽可能的都缓存起来。这样子第二次再访问相同页面的时候,如果缓存还在有效期内(即缓存还没有过期),就会被命中。

b. 缓存周期:一些不容易更新的页面资源等,缓存周期可以设置的长一点,这样子用户第二次访问的时候,发现这些缓存,还在缓存周期之内,就会被命中。

c. 缓存尺寸:例如内存8GB以上,硬盘大一些,这些对静态资源尤其有效,静态的资源基本很少被替换掉,后期访问的时候,命中率会高很多。

d. 用户访问量:用户访问量越大,一般命中率也会越高,举例,一个页面被缓存后,在缓存有效期内,被更多人访问到,也就是单位时间内被命中的次数更多,当然命中率会更高一些。相反的,如果一个页面被缓存后,很久都没有用户再一次的访问到这个页面,即使有访问到,也已经是过期的页面了,那么就会降低命中率。