`

Apache缓存mod_cache配置

阅读更多

Apache 的缓存方式有两种,一种是基于硬盘文件的缓存,由 mod_disk_cache 实现,另一种是使用内存缓存,由 mod_mem_cache 实现,不过它们都是依赖 mod_cache 模块的,mod_cache 模块提供了一些缓存配置的指令供它们使用,而 mod_file_cache 模块是搭配 mod_mem_cache 模块使用的。

 

1、基于硬盘文件的缓存
基于硬盘文件存储的缓存由 mod_disk_cache 模块实现,先看个简单的配置例子:

<IfModule mod_cache.c>
    CacheDefaultExpire 86400
    <IfModule mod_disk_cache.c>
    CacheEnable disk /
    CacheRoot /tmp/apacheCache
    CacheDirLevels 5
    CacheDirLength 5
    CacheMaxFileSize 1048576
    CacheMinFileSize 10
    </IfModule>
</IfModule>
 

 

把上面的配置加到 Apache 的 httpd.conf 文件中,如果缓存相关的模块都已经编译进了 Apache 的核心,则无需加载模块,直接就能使用上面的指令。指令的详细说明如下:

CacheDefaultExpire:设定缓存过期的时间(秒),默认是1小时,只有当缓存的文档没有设置过期时间或最后修改时间时这个指令才会生效
CacheEnable:启用缓存,第1个参数是缓存类弄,这里当然是 disk了,第2个参数是缓存路径,指的是 url 路径,这里是缓存所有的东西,直接写上“/”即可,如“/docs”则只缓存 /docs 下的所有文件
CacheRoot:缓存文件所在的目录,运行 Apache 的用户(如daemon 或 nobody)要能对其进行读写,如果不清楚的话可以直接设置成 777,请手动建立该目录并设置好访问权限
CacheDirLevels:缓存目录的深度,默认是3,这里设置为5
CacheDirLength:缓存目录名的字符长度,默认是4,这里设置为5
CacheMaxFileSize 和 CacheMaxFileSize:缓存文件的最大值和最小值(byte),当超过这个范围时将不再缓存,这里设置为 1M 和 10bytes
基于硬盘文件存储的文件基本上就这些内容,设置好后重启 Apache 应该就能使用了。一切正常的话,可以在缓存目录下看到 Apache 自动建立的一些目录和缓存的数据文件。

 

 

简单说一下上面一些指令的意思:

CacheEnable:启用缓存,使用基于内存的方式存储
MCacheMaxObjectCount:在内存中最多能存储缓存对象的个数,默认是1009,这里设置为20000
MCacheMaxObjectSize:单个缓存对象最大为 1M,默认是10000bytes
MCacheMaxStreamingBuffer:在缓冲区最多能够放置多少的将要被缓存对象的尺寸,这里设置为 65536,该值通常小于100000或 MCacheMaxObjectSize 设置的值
MCacheMinObjectSize:单个缓存对象最小为10bytes,默认为1bytes
MCacheRemovalAlgorithm:清除缓存所使用的算法,默认是 GDSF,还有一个是LRU,可以查一下 Apache 的官方文档,上面有些介绍
MCacheSize:缓存数据最多能使用的内存,单位是 kb,默认是100kb,这里设置为128M
保存重启 Apache 基于内存的缓存系统应该就能生效了,根据需要可以使基于内存的存储或硬盘文件的存储方式一起使用,只要指明不同的URL路径即可。

3、注意事项
使用缓存需要注意如下事项:

要使用缓存,必须使用指令 CacheEnable 启用它,目前可用的缓存类型为 disk 或 mem,禁止缓存可以使用 CacheDisable,如 CacheDisable /private
待缓存的 URL 返回的状态值必须为: 200、203、300、301 或 410
URL 的请求方式必须是 GET 方式
发送请求时,头部中包含 “Authorization: ”的字符串时,返回的内容将不会被缓存
URL 包含查询字符串,如问号?后的那些东西,除非返回的内容包含“Expires:”,否则不会被缓存
如果返回的状态值是 200,则返回的头部信息必须包含以下的一种才会被缓存:Etag、Last-Modified、Expires,除非设置了指令 CacheIgnoreNoLastMod On
如果返回内容的头部信息“Cache-Control:”中包含“private”,除非设置了指令 CacheStorePrivate On,否则不会被缓存
如果返回内容的头部信息“Cache-Control:”中包含“no-sotre”,除非设置了指令 CacheStoreNoStore On,否则不会被缓存
如果返回内容的头部信息“Vary:”中包含了“*”,不会被缓存

4、其它一些指令的介绍
如果你的网站有几个文件的访问非常频繁而又不经常变动,则可以在 Apache 启动的时候就把它们的内容缓存到内存中(当然要启用内存缓存系统),使用的是 mod_file_cache 模块,具体如下:
有多个文件可以用空格格开
MMapFile /var/www/html/index.html /var/www/html/articles/index.html
上面是缓存文件的内容到内存中,除此之外,还可以只缓存文件的打开句柄到内存中,当有请求进来的时候,Apache 直接从内存中获取文件的句柄,返回内容,和 MMapFile 指令很像,具体如下:
CacheFile /var/www/html/index.html /var/www/html/articles/index.html
上面两个指令所缓存的文件如果有修改的话,必须重启 Apache 或使用 graceful 之类的方式强制使 Apache 更新缓存数据,否则当用户访问的时候获取的不是最新的数据。

有时候需要根据某些特殊的头部信息来决定是否进行缓存,则可以使用如下指令:
当头部信息中包含 Set-Cookie 时则跳过不进行缓存操作
CacheIgnoreHeaders Set-Cookie
有时候需要缓存的时候跳过 URL 中的查询字符串?使用如下指令:
CacheIgnoreQueryString On

 

Apache 的缓存系统不仅可以缓存服务器本身的文件,也可以缓存通过代理得到的内容,对了,Apache 可以像 Squid 一样做代理,而且做的还不错,下篇文章就介绍一下 Apache 的代理功能吧。善用 Apache 的缓存功能,可以让你的网站速度提升不少。做为一个网站来说,虽然可用的各种缓存方案很多,但在 Web 服务器层做缓存的效率还是很值得一试的。

分享到:
评论

相关推荐

    Apache 内容动态缓冲模块 mod_cache应用

    mod_cache是apache中基于URI键的内容动态缓冲(内存或磁盘) 从Apache2.2起,mod_cache和mod_file_cache将不再是试验模块,它们已经足够稳定,可以用于实际生产中了。这些缓冲体系提供了一个强有力的途径来加速原始web...

    mod_auth_cache-开源

    “mod_auth_cache”是 Apache 网络服务器的身份验证缓存模块,它使用会话 cookie 透明地缓存用户身份验证,这最初是由不同的模块完成的。 另一个目标是允许在域中进行单点登录。

    WordPress静态化插件WP-Super-Cache

    通过 Apache mod_rewrite 重定向直接访问这些静态文件,理论上可以获得更好的性能。 WP-Super-Cache插件安装: 下载WP-Super-Cache插件,然后上传插件到/wp-content/plugins/文件夹。 到wp管理后台插件页面激活...

    ISAPI Rewrite 3 (IIS重写URL插件)

    它的行为是像Apache的mod_Rewrite ,但专为微软的Internet信息服务( IIS ) 。 ISAPI_Rewrite是一个ISAPI筛选器的书面纯的C / C + +所以速度极快。 ISAPI_Rewrite让您的自由,超出标准网址计划和发展自己的计划。 ...

    mod-cache-requester - Apache Web Server-开源

    Apache Web Server 的 mod-cache-requester 通过在缓存中维护所有流行页面来减少服务器雷群。

    EaglePHP框架1.9

    14、修改默认入口文件将apache_get_modules函数改为在phpinfo中获取mod_rewrite模块是否安装。 15、优化Exception处理机制,抛出异常后在其他的代码块处进行try catch捕捉。 如有任何疑问和建议请在官网留言反馈...

    Apache2 DSO shared memory module-开源

    Mod_cachem是仅Apache 2的DSO模块,它创建,维护和管理可由其Dap模块中的其他DSO模块在其ap_hook_method_handler中使用的共享内存缓存(命名或匿名)。

    graphite-web-iow:高度可扩展的实时图形系统。 IPONWEB资料库

    概述石墨由两个主要成分组成: 在Apache / mod_wsgi下运行的前端Django Webapp 后端carbon-cache.py守护程序客户端应用程序连接到端口2003上正在运行的carbon-cache.py守护程序,并向其发送以下格式的文本行: my....

    Portal-2-Leaderboard

    Apache mod_rewrite 和 mod_expires 启用图像缓存工作和漂亮的 URL 一旦有了这些,导入存储库中提供的数据库转储,更改 db_conf.php 文件中的数据库设置。 要使 APC 缓存工作,请从浏览器运行 refreshcache.php。 ...

    bandwidth:获取一系列 url 的页面加载时间并提取计时方法的工具

    带宽获取一系列 url 的页面加载时间并提取...0 下找到它) 要使用 chrome 缓存,请下载扩展“Cache Killer”并将其配置为在浏览器启动时打开从这最后一步开始,Chrome 应该开始向侦听器发送有关选项卡加载时间的数据

Global site tag (gtag.js) - Google Analytics