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

两种缓存模式:

mod_disk_cache

  一个基于磁盘的存储管理模块。

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路径即可。

-----------------------------------

学到这里,apache的内容就先告一段落了,后续学会习tomcat应用服务。

Apache 模块 mod_cache应用相关推荐

  1. 服务器架设笔记——Apache模块开发基础知识

    通过上节的例子,我们发现Apache插件开发的一个门槛便是学习它自成体系的一套API.虽然Apache的官网上有对这些API的详细介绍,但是空拿着一些零散的说明书,是很难快速建立起一套可以运行的系统. ...

  2. 10 个强大的 Apache 模块

    Apache 是世界上使用最为广泛的 Web 服务器,没有之一! 因为其具有高效.功能强大.超强可扩展性等特点.本文向你推荐 10 个非常强大的 Apache 扩展模块,可以帮助你的 Web 应用更加 ...

  3. Apache模块开发

    一.简介 Apache HTTP服务器是一个模块化的软件,使管理者可以选择核心中包含的模块以裁剪功能.可以在编译时选择被静态包含进httpd二进制映象的模块,也可以编译成独立于主httpd二进制映象的 ...

  4. Windows下使用apache模块实现合并多个js、css提高网页加载速度

    这篇文章主要介绍了Windows下使用apache模块实现合并多个js.css提高网页加载速度,本文使用的模块是基于mod_concat自己修改的,需要的朋友可以参考下 现在的网站表现力越来越丰富,页 ...

  5. apache php 工作模式,PHP Apache中两种工作方式区别(CGI模式、Apache 模块DLL)

    搜索热词 对PHP在Apache中两种工作方式的区别(CGI模式.Apache 模块DLL)感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! Windows 下有两种方法使 ...

  6. apache php 3秒,php版本(5.3,5.5,7.0)及运行模式(fast-cgi/fpm,apache模块)之间性能对比测试...

    php 7.0发布在即,一直以来有传言说php7性能有飞跃,于是做了一个测试. 测试环境 硬件  虚拟机2G内存 OS  CentOS 6.7 (kernel 2.6.32-573.7.1.el6.x ...

  7. Apache模块管理

    Apache是一个模块化设计的服务,核心只包含主要功能,扩展功能通过模块实现,不同模块可以被静态的编辑进程序,也可以动态加载. # /usr/local/apache/bin/httpd -M  查看 ...

  8. apache c语言源码,Apache模块开发/用C语言扩展apache(2:APR编程介绍)

    Apache模块开发/用C语言扩展apache(2:APR编程介绍) by linux_prog 可以看到apache代码中使用了大量的以apr_开头的结构或者函数,这些其实是APR. 什么是apr  ...

  9. Apache模块的方式安装PHP

    以Apache模块的方式安装PHP,在文件http.conf中首先要用语句LoadModule   php5_module "D:/xampp/apache/bin/php5apache2. ...

  10. 以apache模块的方式安装php,在WIN98下以apache模块方式安装php

    在WIN98下以apache模块方式安装php 2021-01-21 16:12:27982 在WIN98下以apache模块方式安装php手记 foolboy@chinaren.com ★相关软件: ...

最新文章

  1. 基于Hash算法的高维数据的最近邻检索
  2. c语言中描述x和y都大于或等于z的表达式,C语言期末考试题含答案.doc
  3. 关于计算机网络的好坏处的英语作文,网购的好处和坏处英语作文带翻译
  4. lightning接口_苹果手机接口未来将和安卓手机统一——欧盟通过正式决议
  5. Ajax拿取html格式数据
  6. 一行Python代码
  7. python三大器_Python - 三大器 迭代器,生层器,装饰器
  8. python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...
  9. 树莓派 红灯不亮_关闭树莓派的电源指示灯和状态指示灯
  10. android其他占用存储,Android如何梳理内存占用情况解决OOM问题
  11. 针对Linux学习,值得阅读的五本书籍,不看可能错失机会
  12. 自然语言处理的学习心得
  13. python使用OpenCV-Python结合百度图像识别api实现图片中的文字识别
  14. pcap文件格式及写pcap文件
  15. 软件安装: 安装.deb文件操作
  16. 51单片机LCD显示温度与串口接受温度
  17. 一种基于自动机的快速分词方法
  18. MATLAB模型预测控制(MPC)示例
  19. 学生晚上回宿舍时其在实验室的计算机主机,学生晚上回宿舍时, 其在实验室的计算机主机应关闭, 显示器一般不用关。...
  20. python matplotlib各种绘图类型完整总结

热门文章

  1. 后端-SpringBoot MySql 连接语句
  2. 计算机科学与技术专接本的历年真题,10年计算机专业专接本真题
  3. OFFICE技术讲座:中文标点符号有哪些
  4. LINUX使用OpenSSL进行签名
  5. OpenJDK8 u282发布一个月了,龙芯还没有更新跟进
  6. VS2010:把项目由WIN32改为x64
  7. 电子双缝干涉,可以在穿过缝前进行探测
  8. java web 网络安全_Java Web中的入侵检测及简单实现
  9. mysql dba环境验收_面对一个全新的环境,作为一个Mysql DBA,首先应该了解什么?
  10. VC++ DLL注入目标程序