`

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_ssl(apache SSL插件)

    2. **Session Cache**:利用`SSLSessionCache`指令启用会话缓存,减少握手开销,提升性能。 3. **TLS False Start**:通过`SSLFalseStart`,可以让客户端在收到服务器的证书之前就开始发送数据,加快握手速度。 ...

    apache_2.2.6_win32

    性能优化则包括限制并发连接数、使用缓存模块(如`mod_cache`)、调整内存分配策略等。 8. **与其他软件集成** Apache常与PHP、MySQL等一起用于构建LAMP(Linux, Apache, MySQL, PHP)或WAMP(Windows, Apache, ...

    mod_auth_cache-开源

    Apache 作为全球最广泛使用的Web服务器,拥有丰富的模块扩展功能,其中 mod_auth_cache 是一个重要的身份验证缓存模块。这个模块的主要目的是提高网站性能,通过缓存用户身份验证信息,减少服务器处理重复认证请求的...

    mod_pagespeed

    在 Apache 的配置文件中,需要引入 mod_pagespeed 的配置文件: ```apache Include conf/extra/pagespeed.conf ``` 接下来,在 `pagespeed.conf` 文件中进行以下配置: ```apache # 加载 mod_pagespeed 模块 ...

    apache server_HTTP_apache_

    8. **缓存机制**:通过mod_cache模块,Apache可以实现内容的本地缓存,提高响应速度。 9. **负载均衡**:结合mod_proxy模块,Apache可以实现简单的负载均衡,将请求分发到多个后端服务器,提升系统的整体处理能力。...

    JAVA缓存技术_深入了解.ppt

    - **Web服务器缓存**:如Apache的mod_cache或Nginx的HTTP caching模块。 - **客户端浏览器缓存**:浏览器自动缓存HTML、CSS、JavaScript等静态资源。 ### 4. 操作系统缓存 操作系统的Disk Cache利用内存来存储经常...

    Apache 安装配置mod_pagespeed加速模块

    ### Apache 安装配置mod_pagespeed加速模块 #### 概述 `mod_pagespeed`是谷歌推出的一款专门用于加速HTTP服务器性能的优化模块。通过自动化的代码优化、内容压缩及缓存机制,能够显著提高网站的加载速度。该模块...

    apache中使用mod_gnutls模块实现多个SSL站点配置(多个HTTPS协议的虚拟主机)

    4. `GnuTLSCache dbm "/var/cache/mod_gnutls_cache"` 设置GnuTLS的缓存类型为dbm,并指定缓存路径。 5. `GnuTLSCacheTimeout 300` 设置缓存超时时间为300秒。 6. `NameVirtualHost 10.1.1.22:443` 声明虚拟主机将...

    Apache配置手册.doc

    14. **缓存策略**:利用mod_cache和mod_disk_cache模块实现静态内容的本地缓存,减少网络延迟。 15. **GZIP压缩**:通过启用mod_deflate模块,对响应内容进行GZIP压缩,以减小传输数据量,加快网页加载速度。 16. ...

    apache2.2_安装,优化、模块配置

    - 配置Apache编译选项,其中包括启用各种共享模块、缓存模块、代理模块等,例如: ```sh ./configure --prefix=/usr/local/apache2.2.3 --enable-mods-shared=all --enable-so --with-mpm=worker --enable-...

    Apache服务器配置与管理

    10. **缓存机制**:Apache的mod_cache模块可以帮助缓存静态资源,减少服务器负载并提高响应速度。 在实际操作中,我们还需要学会使用命令行工具如apachectl来启动、停止和监控Apache服务,以及使用htaccess文件进行...

    apache_2.0.55-win32-x86-no_ssl.rar

    还可以考虑使用缓存模块(如mod_cache)和负载均衡(如mod_proxy_balancer)来提高服务器处理能力。 10. **集成环境**:Apache常与其他开源软件一起使用,如PHP(通过mod_php模块)和MySQL(配合使用构成LAMP环境)...

    apache2.2 + tomcat6 配置方式

    - Caching:使用缓存模块如mod_expires和mod_cache,提高静态内容的响应速度。 - JNDI资源:在Tomcat中配置JNDI资源,使Apache和Tomcat共享数据库连接等资源。 通过以上步骤,Apache2.2和Tomcat6可以协同工作,...

    apache转发服务器

    同时,通过mod_proxy_cache模块,Apache还可以作为缓存服务器,存储经常请求的内容,减少对后端服务器的压力。 五、内容过滤与优化 Apache转发服务器可以通过mod_proxy_html等模块对后端服务器的响应内容进行修改...

    网站Cache全分析.doc

    Apache的mod_cache模块则提供了一种在服务器端实现缓存的功能,与Squid相似,但更适用于集成在Web服务器内部。 3. 前端Cache工作原理 前端Cache主要通过HTTP协议中的头信息进行控制,如: - Last-Modified:指示...

    apache_php5_mysql安装与配置脚本宝典

    sed -i 's/query_cache_size.*/query_cache_size = 16M/g' /etc/my.cnf sed -i 's/datadir.*/datadir=\/var\/lib\/mysql/g' /etc/my.cnf sed -i 's/log_error.*/log_error=\/var\/log\/mysqld.log/g' /etc/my.cnf ...

Global site tag (gtag.js) - Google Analytics