web缓存
来源:互联网 发布:网络找不到打印机 编辑:程序博客网 时间:2024/05/16 08:03
测试环境说明
本文使用的Apache版本为 2.2.8,Apache2.2版本的官方文档中关于缓存模块有mod_cache,mod_disk_cache和mod_mem_cache,而在Apache2.4版本的官方文档中却有所变动,模块名称变为mod_cache,mod_cache_disk和mod_cache_socache,虽然清除了mod_mem_cache,添加了mod_cache_socache,但是对于mod_disk_cache却没有多大影响,因此我们可以使用磁盘缓存作为web服务器缓存,这样即使更换了高版本的Apache,对于缓存模块的配置来说也无需做太多调整。
配置Apache缓存
- LoadModule cache_module modules/mod_cache.so
- LoadModule disk_cache_module modules/mod_disk_cache.so
- CacheRoot E:/tmp
- CacheEnable disk /
- CacheDirLevels 5
- CacheDirLength 3
LoadModule开启相关模块,CacheRoot缓存文件存放目录,CacheEnable启用disk类型缓存(也就是磁盘缓存,2.2版本中还有mem内存缓存),CacheDirLevels缓存文件目录深度,5代表了一共嵌套5个文件夹,CacheDirLength缓存文件夹名称长度,3代表每个文件夹名称的长度是3,此处仅对Apache缓存做了简单的配置,想要了解更详细的配置信息可以点击此处。
测试静态文件缓存
配置完成后我们来测试下配置的Apache缓存是否生效,我们输入一个静态页面的url,然后到缓存文件存放目录(CacheRoot中设置的值)中寻找,果然生成了很多文件夹,我们打开其中一个,在最底层文件夹中我们终于找到了缓存文件,其中以.data结尾的文件存储着响应内容,以.header结尾的文件存储着头信息,有些童鞋可能就会有疑问了,为什么要分开存储?因为分开存储是为缓存过期检查提供了方便,只需要检查头信息的文件即可。为什么要进行过期检查?难道你希望Apache永远使用这份缓存内容去响应用户的请求吗?所以我们需要对文件进行过期检查。
目录分级的好处
相信不少童鞋在刚才打开层级目录的时候郁闷了,怎么这么多文件夹,童鞋别忘了,这是你自己的设置的哦(CacheDirLevels和CacheDirLength)。你可能会问了,能不能设置的少一点,当然可以,因为决定权在你手里,但是这里小编有必要提醒你一下,如果设置的目录层级很浅,导致大量的文件堆积在一个文件夹中,会增加查找开销。为了更加形象的描述,小编举个例子,相信大家都使用过浏览器的缓存功能,一般情况下不会清除,如果你很久没清理过浏览器的缓存的话,那么你可以尝试着打开浏览器的缓存文件夹,以小编的google浏览器缓存文件夹为例,缓存文件3575个,文件大小364MB,打开文件夹耗时5s。仅仅3000多个文件,光打开文件夹的时间就已经耗费了5s,如果在加上查找,那耗时就更不可估计。我们使用缓存的目的就是让web服务器更快的响应用户的请求,如果耗时如此之久,还不如直接响应请求,不使用缓存。因此,合理的目录结构的设置十分必要,至于如何分级,可以视情况而定。
小结
1.Apache2.4中cache相关模块跟Apache2.2中有所不同,Apache2.4更改了disk模块的名称,并去掉了mem模块,添加了socache模块,并增加一些Apache2.2中没有的配置选项,如果使用Apache2.4可以根据官方文档自行配置。
2.目录分级是一种设计思路,当程序设计的场景中可能会出现一个文件夹中生成大量文件的时候(例如各种缓存),我们就应该考虑对这样的文件存储方式作出调整,使用目录分级,尽可能让这些文件分摊到不同的目录中去,这样会减少同一目录大量文件的查找开销,节省服务器资源。
- Web缓存
- Web缓存
- web缓存
- WEB缓存
- WEB缓存
- web缓存
- Web缓存
- WEB 缓存
- web缓存
- web缓存
- Web缓存
- web缓存
- Web缓存
- Web --- 缓存
- web缓存
- web缓存
- web缓存
- web缓存
- CrodeForces 851A--#432 Div2 A
- westful httpclient dopost调用接口
- 简单说 通过JS控制CSS的各种方式(上)
- CrodeForces 850A--#432 Div2 C
- WebService 应用场景
- web缓存
- 服务器缓存
- switch所支持的参数类型
- Vue入门学习-使用服务器传来的JSON数据交给Vue渲染HTML页面
- android 由模块化到组件化(一)
- Ubuntu14.04下网络配置与加速(Windows10、VMware )
- 程序员都应该懂一点开源协议
- Billboard(线段树)
- 对于Map集合转JSON的思考