`
pluto418
  • 浏览: 166060 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Apache的多种缓存设置方法

阅读更多

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 4
    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 自动建立的一些目录和缓存的数据文件。
2、基于内存的缓存
基于内存的缓存主要由 mod_mem_cache 模块实现
<IfModule mod_cache.c>
   <IfModule mod_mem_cache.c>
       CacheEnable mem /
       MCacheMaxObjectCount 20000
       MCacheMaxObjectSize 1048576
       MCacheMaxStreamingBuffer 65536
       MCacheMinObjectSize 10
       MCacheRemovalAlgorithm GDSF
       MCacheSize 131072
   </IfModule>
</IfModule>
简单说一下上面一些指令的意思:
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 Geode.zip

    水平扩展到数千个缓存成员, 具有多种缓存拓扑结构来满足不同的企业级部署需求. 缓存能够跨多台机器进行分布.异步和同步缓存更新传播.Delta 传播只分发新版本和旧版本的变化量 (delta) , 而不是整个对象, 从而可以...

    Android开源弹幕引擎·烈焰弹幕使

    支持多种弹幕参数设置 支持多种方式的弹幕屏蔽 TODO: 继续精确/稳定绘帧周期 增加OpenGL ES绘制方式 改进缓存策略和效率 Download Download the latest version or grab via Maven: &lt;groupId&gt;...

    超集:Apache Superset是一个数据可视化和数据探索平台

    超集 一个现代的,可用于企业的商业智能Web应用程序。 | | | | | | | 屏幕截图和Gif 画廊 查看仪表盘 切片和切块您的数据 使用SQL Lab查询和可视化数据 使用deck.gl可视化地理空间...无缝的内存中异步缓存和查询

    memcache:具有最高效ASCII协议解析器的Node.js内存缓存客户端

    支持存储string , numeric和JSON值API支持回调或Promise 支持开火和忘记请求支持多种连接配套此使用来管理多个软件包。 - 主程序包是memcached客户端。 - 一个非常高效的Memcached ASCII协议解析器。 在NodeJS中...

    docker-superset:Apache-Superset的Docker映像的存储库。 [Docker镜像:https:hub.docker.comrabhioncbrdocker-superset]

    邀请贡献者对项目进行增强和维护。...启动容器的多种方法,即使用docker-compose或使用docker run命令。 超集所有组件,即Web应用程序,芹菜工作者,芹菜花UI可以在同一容器中或不同容器中运行。 容器首次运行将设置

    最好的php网店系统

     配送方法设置 可以添加多种配送方法,每种配送方法可以指定按固定运费、按重量计算运费或按订单价格计算运费同一种配送方法可以和不同区域绑定,产生不同的运费计算方法前台网站订单提交时,根据顾客选择的配送...

    CmlPHP 2.7.1.zip

    CmlPHP是一个免费的遵循apache协议的全能型php开源框架,基于php5.3 版本(已经测试过php7)开发的MVC/HMVC/MVSC/HMVSC框架,支持composer、分布式数据库、分布式缓存,支持文件、memcache、redis、apc等缓存,支持多种...

    kangle web服务器源代码 v3.2.1

    kangle内置内存/磁盘两级缓存,采用LRU淘汰算法,缓存命中率非常高,有效降低资源占用 可以设置每个虚拟主机独立进程,独立身份运行(虚拟主机商的最爱,安全的实现虚拟主机功能); 企业版还带有独特的防CC攻击和限制...

    kangle最新版linux安装包

    kangle内置内存/磁盘两级缓存,采用LRU淘汰算法,缓存命中率非常高,有效降低资源占用 可以设置每个虚拟主机独立进程,独立身份运行(虚拟主机商的最爱,安全的实现虚拟主机功能); 商业版还带有独特的防CC攻击和限制...

    Nginx-1.23.4

    它最初由 Nigel Cook 开发,旨在解决 Apache 服务器在高并发环境下性能瓶颈的问题。Nginx 具有占用资源少、处理能力强等优点,在互联网应用中广泛应用于静态资源服务、反向代理、负载均衡、HTTP缓存、SSL 加速等场景...

    incubator-pagespeed-mod:Apache模块,用于重写网页以减少延迟和带宽

    mod_pagespeed CI 状态特拉维斯 mod_pagespeed是Google创建的一个开源... 有40多种可用的优化过滤器,其中包括: 图像优化,压缩和调整大小CSS和JavaScript的串联,缩小和内联缓存扩展,域分片和域重写延迟加载JavaS

    php开源框架 CmlPHP.zip

    CmlPHP V2.x 自带强大的安全机制,支持多种缓存并可轻松切换,帮你解决开发中各种安全及性能问题,保证站点稳定、安全、快速运行 CmlPHP V2.x 提供了详细的开发文档,方便新手快速入门 CmlPHP V2.x 拥有灵活...

    superset:Apache Superset是一个数据可视化和数据探索平台

    多种精美的可视化展示您的数据 无代码可视化构建器,用于提取和呈现数据集 世界一流SQL IDE,用于准备数据以进行可视化,其中包括丰富的元数据浏览器 轻量级的语义层,使数据分析人员能够快速定义自定义维度和指标 ...

    solr 企业搜索引擎教程

     拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域  显式类型能够减少对域类型的猜测  能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置 1.2.3 查询  拥有可...

    OpenJPA 2.2.1 API (CHM格式)

    OpenJPA 针对数据持久化提供多种层次、多方面的缓存支持,包括数据、查询、汇编查询的缓存等。这些缓存的应用可以大幅度的提高企业应用的运行效率。 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后...

    旭东多语言企业网站管理系统XDcms v3.0.1 UTF-8.rar

    XDcms多语言企业网站管理系统简介 XDcms是南宁旭东网络科技有限公司推出的一套完全开源的通用的内容管理系统。...模块化开发方式做为功能开发形式。框架易于功能扩展,代码维护,二次...4、修复留言模块不能调用系统设置

    MLECMS多语言企业网站管理系统 2.3.rar

    高效的缓存机制,使用多种数据库性能优化技术,尽最大可能节约资源和提高系统的实际运行效率。 方便快捷的电子商务及订单管理系统 支持财付通、支付宝等多家平台支付接口,购物车、在线充值等方便快捷的电子商务...

    飞蛙B2B2C商城电商系统 v2.1.8.zip

    采用PHP5 MySQL技术为基础,OOP(面向对象)方式进行核心框架搭建,结合MVC模式进行开发,可以支持Windows/Unix服务器环境,需PHP5.3及以上版本支持,可运行于包括Apache、IIS和Nginx在内的多种WEB服务器。...

    discuz!6.1GBK 版本论坛系统

    【新增】自定义模块脚本缓存模式选择,既可以使用系统缓存功能,也可使用脚本自己的缓存机制 【新增】全新设计的内置 13 个模块脚本,功能各异,调用方便,站长可以随意选取和组合 【内置】近 30 个常用边栏模块,...

Global site tag (gtag.js) - Google Analytics