Fikker首页 -> 帮助系统 -> 关于内存缓存与硬盘缓存

1、说明:

Fikker 只缓存以 GET 方法请求并且源站返回状态为 200 OK 的页面。

2、关于内存缓存和硬盘缓存:

1、内存缓存 就是用高速内存将小文件(默认小于1MB的可缓存文件)缓存下来,如果内存已满,会自动清理,优先清理掉访问频率比较低的页面,访问频率比较高的页面尽量留下来,便于提高命中率,实现加速的目的。

2、硬盘缓存 就是利用硬盘将大文件(默认大于32KB的可缓存文件)缓存下来,所以一个文件既可以同时保存在内存中,又可以同时保存在硬盘上,硬盘缓存满后,会自动清理。备注:需要自行设置硬盘缓存目录(设置到空白分区)。<硬盘缓存设置>

3、当用户访问一个页面的时候,先查找内存缓存,如果没有找到,再查找硬盘,尽可能的命中缓存。内存缓存为一级缓存,缓存热门小页面(小于1MB),用于减少硬盘的物理寻址操作(通常情况下,硬盘的响应速度和IO速度相对于内存来说要慢一个数量级),提高响应速度。硬盘缓存为二级缓存,缓存全部的页面,提升命中率。

4、当用户访问已过期的缓存时,Fikker 先向源站询问这个文件是否 "真的" 过期(利用 HTTP 协议 If-Modified-Since 和 If-None-Match 属性), 如果确认没有过期,则重新计算已缓存文件的时效性,并将已缓存的文件高速返回给用户,最大化减少带宽消耗,提高访问速度。

5、额外说明:因为内存缓存由程序/进程申请的堆内存(HeapMemory)建立,当程序/进程被关闭时,堆内存会被操作系统回收,所以重启后内存缓存会归0,但硬盘缓存依然存在且不受影响,所以启动后程序会通过硬盘缓存和以上规则重新建立高速内存缓存(基本原则为除版本更新外,其它情况少重启即可)。