`

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...

    Apache:Apache性能优化:Apache缓存机制与优化策略.pdf

    合理的使用和配置Apache缓存模块,能够显著提升Web服务器的性能,改善用户体验,降低运维成本。 实际上,优化Apache缓存涉及多方面的考量,包括服务器硬件配置、网络状况、内容更新频率、访问模式等。一个好的缓存...

    mod_ssl(apache SSL插件)

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

    Apache:Apache的安装与配置:9. Apache缓存与内容分发网络(CDN)集成.pdf

    配置Apache缓存策略需要考虑缓存存储位置、有效期、大小限制以及清理策略等多个方面。通过在Apache配置文件中设置相关指令,如指定缓存根目录、默认过期时间、最大和最小文件大小等参数,可以实现详细的缓存策略。...

    apache_2.2.6_win32

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

    Apache:Apache的安装与配置:14. Apache性能调优与安全加固.pdf

    Apache提供了多个缓存模块,包括mod_cache、mod_mem_cache、mod_disk_cache以及mod_proxy_cache。根据内容的类型和访问频率,选择合适的缓存模块并进行合理配置是关键。例如,mod_mem_cache适用于内存中的小文件和...

    mod_auth_cache-开源

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

    mod_pagespeed

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

    Apache2.2.16+ mod_jk +Jboss4.2.3.GA集群

    ### Apache2.2.16 + mod_jk + Jboss4.2.3.GA 集群配置详解 #### 一、环境搭建基础 **1. 配置 JBoss 环境变量** 为了确保 JBoss 正常运行,首先需要配置 JBoss 的环境变量。这一步骤与配置 Tomcat 类似,主要涉及 ...

    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:Apache性能优化:Apache安全设置与性能平衡.pdf

    通过调整mod_cache和mod_disk_cache模块参数,可以实现缓存性能的优化。相关配置参数包括CacheRoot、CacheSize和CacheDefaultExpire,分别用来定义缓存目录、缓存大小和默认缓存过期时间。 二、Apache安全设置 1. ...

    Apache服务器的设置全攻略

    - **调整缓存设置**:例如启用mod_cache模块以改善静态内容的缓存机制。 - **启用压缩**:使用mod_deflate模块对响应内容进行实时压缩,减少传输的数据量。 - **优化MIME类型**:确保使用正确的MIME类型,避免不必要...

    Apache:Apache性能优化:Apache配置文件优化技巧.pdf

    LimitRequestBody指令可以限制上传文件的大小,而mod_cache模块的Cache指令和Expires指令可以用来启用缓存和控制静态内容的过期时间。 除了配置指令,服务器的性能优化还包括对模块的使用和管理。例如,正确加载和...

Global site tag (gtag.js) - Google Analytics