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

mod_cache是apache中基于URI键的内容动态缓冲(内存或磁盘)

从Apache2.2起,mod_cache和mod_file_cache将不再是试验模块,它们已经足够稳定,可以用于实际生产中了。这些缓冲体系提供了一个强有力的途径来加速原始web服务器(origin webserver)和代理服务器(proxy)的HTTP处理速度。
mod_cache以及它的支持模块mod_mem_cache和mod_disk_cache提供了智能的HTTP缓冲。内容(content)本身被存储在缓冲区中,mod_cache的目的在于管理控制内容缓冲能力的各种HTTP头和选项。它可以同时处理本地的内容和代理的内容。mod_cache被设计为同时针对简单的和复杂的缓冲配置,以用于处理代理的内容、动态的本地内容、必须加速访问的随时间而改变本地文件。
另一方面,mod_file_cache实现了一个更基本的、但是在某些情况下更有效的缓冲形式,它避免了主动确保URL缓冲能力所需的维护复杂性,mod_file_cache通过提供文件句柄(file-handle)和内存映射(memory-mapping)的技巧来维持一个自Apache最后一次启动以来的文件缓冲区。同样地,mod_file_cache的目标是改善不常修改的本地静态文件的访问时间。
由于mod_file_cache提供了一个相对简单的缓冲实现,除了CacheFile和MMapStatic文档的特定段落之外,这篇指南的说明覆盖了mod_cache的缓存体系结构。

安装编译 
为了能够在apache使用cache ,需要在安装编译时加上如下参数。
--enable-cache  --enable-disk-cache --enable-mem-cache  --enable-file-cache


代码如下:

[root@localhost httpd-2.4.1]# ./configure --prefix=/usr/local/apache2worker --enable-so  --enable-cache  --enable-disk-cache --enable-mem-cache  --enable-file-cache

[root@localhost httpd-2.4.1]# make
[root@localhost httpd-2.4.1]# make install

两种缓存模式:
1、mod_disk_cache
一个基于磁盘的存储管理模块。
2、mod_mem_cache
一个基于内存的存储管理模块。mod_mem_cache可以被配置为两种不同的操作模式:①缓存打开的文件描述符;②在堆(heap)上缓存对象。mod_mem_cache既可以用于缓存本地生成的内容,也可以用于为反向代理模式下的mod_proxy缓存后端服务器输出的内容。

基于硬盘文件的缓存 
基于硬盘文件存储的缓存由mod_disk_cache 模块实现:


代码如下:

<IfModule mod_cache.c>
CacheDefaultExpire  3600
CacheMaxExpire  86400
CacheLastModifiedFactor  0.1

<IfModule mod_disk_cache.c>
CacheRoot  /usr/local/apache/cache
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
CacheMaxFileSize  10000000
CacheMinFileSize  1
</IfModule>

</IfModule>

拷贝上面内容到apache 的 httpd.con文件中:在httpd.conf文件中搜索
#LoadModule cache_module modules/mod_cache.so  // 去掉前面的# 号
使用磁盘文件缓存:
#LoadModule disk_cache_module modules/mod_disk_cache.so  // 去掉前面的# 号
参数详细含义如下:
CacheDefaultExpire:
  设定缓存过期的时间(秒),默认是1小时,只有当缓存的文档没有设置过期时间或最后修改时间时这个指令才会生效
CacheMaxExpire:
  失效周期的最大值,缓存实体的默认失效周期是一个小时(3600秒) ,这个默认值仅仅用在产生内容的原始资源没有明确指定失效时间或最后修改时间的情况下。
CacheLastModifiedFactor:
  在事件的文件中不提供到期时间,指令指定的一个因素是用于生成截止日期。例如,如果该文件的最后修改10小时前, 系数为0.1,那么到期期间将设置为10 * 0.1 = 1小时,如果当前时间是下午3:00,然后计算到期时间为3:00+1小时,也就是下午4:00  ,如果到期时间大于CacheMaxExpire 的时间,那么后者优先级高。
CacheRoot:
  缓存文件所在的目录,运行 Apache 的用户(如daemon 或 nobody)要能对其进行读写,如果不清楚的话可以直接设置成 777,请手动建立该目录并设置好访问权限
CacheEnable:
  启用缓存,第1个参数是缓存类弄,这里当然是 disk了,第2个参数是缓存路径,指的是 url 路径,这里是缓存所有的东西,直接写上“/”即可,如“/docs”则只缓存 /docs 下的所有文件
CacheDirLevels:
  缓存目录的深度,默认是3,这里设置为5
CacheDirLength:
  缓存目录名的字符长度,默认是4,这里设置为5
CacheMaxFileSize 和 CacheMaxFileSize:
  缓存文件的最大值和最小值(byte),当超过这个范围时将不再缓存,这里设置为 1M 和 10bytes
基于硬盘文件存储的文件基本上就这些内容,设置好后重启 Apache 应该就能使用了。一切正常的话,可以在缓存目录下看到 Apache 自动建立的一些目录和缓存的数据文件。

基于内存的缓存
基于内存的缓存主要由 mod_mem_cache 模块实现:


代码如下:

<IfModule mod_cache.c>

<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount  2000
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>

</IfModule>

安装完成之后,需要搜索
LoadModule cache_module modules/mod_cache.so  // 去掉前面的# 号
使用内存文件缓存:
#LoadModule mem_cache_module modules/mod_mem_cache.so  // 去掉前面的# 号
参数详细含义如下:
CacheEnable:
  启用缓存,使用基于内存的方式存储
MCacheSize:
  缓存数据最多能使用的内存,单位是 kb,默认是100kb,这里设置为128M
MCacheMaxObjectCount:
  在内存中最多能存储缓存对象的个数,默认是1009,这里设置为20000
MCacheMinObjectSize:
     单个缓存对象最小为10bytes,默认为1bytes
MCacheMaxObjectSize:
  单个缓存对象最大为 1M,默认是10000bytes
保存重启 Apache 基于内存的缓存系统应该就能生效了,根据需要可以使基于内存的存储或硬盘文件的存储方式一起使用,只要指明不同的URL路径即可。

(0)

相关推荐

  • 如何在Ubuntu下启动Apache的Rewrite功能

    在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/apache2/mods-enabled/rewrite.load 来打开 Mod_rewrite 模块.用指令操作就是: sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabl

  • 浅析Apache中RewriteCond规则参数的详细介绍

    RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始.基础的功能,为了方便理解,下面来看看几个例子. 复制代码 代码如下: RewriteEngine onRewriteCond  %{HTTP_USER_AGENT}  ^Mozilla//5/.0.*RewriteRule  index.php            index.m.phpRewriteCond  %

  • 如何修改和添加Apache的默认站点目录

    一.修改Apache的默认站点目录Apache HTTP Server安装好后,默认的站点目录位于其安装目录下的htdocs文件夹内,默认首页是该文件夹的index.html文件.比如,我的Apache是安装在C:/wamp/bin/apache/Apache2.2.21内,那么我的Apache的完整的默认站点目录地址就是C:/wamp/bin/apache/Apache2.2.21/htdocs/,默认首页就是C:/wamp/bin/apache/Apache2.2.21/htdocs/ind

  • IIS安装Apache伪静态插件的具体操作图文

    Apache和IIS分别有自己的伪静态操作方法,那在Servers2003_IIS需要给PHP程序使用伪静态呢?安装rewrite插件包. 一.下载rewrite插件包,一般里面必须有httpd.ini和Rewrite.dll,如图: 二.一般推荐将伪静态包放至网站根目录下,然后在需要伪静态的网站右击选择属性,如图:,找到ISAPI筛选器,添加rewrite.dll,关闭IIS后再打开,发生优先级变成高,如图:,说明安装成功了. 三.打开httpd.ini,开始配置伪静态 复制代码 代码如下:

  • Apache实现Web Server负载均衡详解(不考虑Session版)

    至少需三台服务器:服务器A:控制服务器服务器B和服务器C:实际执行服务器负载均衡原理:将访问服务器A的请求分发至服务器B和服务器C修改服务器A上apache的http.conf文件: 首先,加载相应的代理模块,去掉以下模块前面的#号:LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.soLoadModule proxy_balancer_module modu

  • Apache遇到的问题 APR not found问题的解决方法

    #./configure --prefix--检查编辑环境时出现: checking for APR... no configure: error: APR not found .  Please read the documentation. 可以用./configure –help | grep apr 查看帮助. --with-included-apr     Use bundled copies of APR/APR-Util --with-apr=PATH         prefix

  • 本地机apache配置基于域名的虚拟主机详解

    1.打开apache的httpd.conf文件,找到# Virtual hosts#Include conf/extra/httpd-vhosts.conf这一段把Include conf/extra/httpd-vhosts.conf前面的"#"去掉. 2.修改位于(win7)c:/windows/system32/drivers/etc/目录下的hosts文件增加一段:127.0.0.1    x.acme.com(你用来访问的域名) 3.我用的是wamp包,所以到c:/wamp/

  • win8下XAMPP中Apache模块无效(apache无法打开)的解决方法

    win8下系统默认占用80端口,导致apache无法打开. 以管理员权限运行c:\windows\system32\cmd.exe C:\WINDOWS\system32>net stop http HTTP Service 服务已成功停止. C:\WINDOWS\system32>netstat -ano | findstr 0.0.0.0:80 C:\WINDOWS\system32>sc config http start=disabled [SC] ChangeServiceCo

  • 深入apache配置文件httpd.conf的部分参数说明

    <Directory>...</Directory> -- 设定指定目录的访问权限<Files>...</Files> -- 设置应用于指定文件的指令示例:拒绝访问以'-ht'开头的文件<Files ~"^\.ht">Order allow,denyDeny from all</Files><Location>...</Location> -- 设置应用于特定URL的指令,容器包含只应用于特

  • 浅析linux下apache服务器的配置和管理

    一.两个重要目录:Apache有两个重要的目录:1.配置目录/etc/httpd/conf:2.文档目录/var/www: 二.两种配置模式:Apache在Fedora下的两种配置方式:文本模式(终端命令行)和图形化配置.两者各有优势:图形化下配置,更容易上手,在文本模式下直接编辑httpd.conf文件,自由性更强些.更直接. 三.Apache服务的启动与关闭Apache服务的停止.启动.关闭可以通过两种模式下进行操作:文本(终端)模式下和图形化界面. 四.终端下的操作如果你想用Linux作为

随机推荐