Apache缓存使用配置

01

Apache缓存介绍

在Web服务器层,虽然可用的缓存方案很多,但是Apache做缓存的效率还是很值得一试的。Apache从2.0开始就已经可以使用缓存模块了,不过在2.0的时候还是实验性的,到了2.2已经完全可以放心地使用。Apache的缓存实现主要依靠mod_cache、mod_disk_cache、mod_file_cache及mod_mem_cache。只需在配置编译的时候加上参数:–enable-cache、–enable-disk-cache、–enable-file-cache、–enable-mem-cache即可。

具体来说,Apache的缓存方式有两种,一种是基于硬盘文件的缓存,由mod_disk_cache实现,另一种是使用内存缓存,由mod_mem_cache实现,不过它们都是依赖mod_cache模块的,mod_cache模块提供了一些缓存配置的指令供它们使用,而mod_file_cache模块是搭配mod_mem_cache模块使用的,下面分别进行介绍。

mod_mem_cache和mod_disk_cache不一定要都安装,可以二选一。

02

安装httpd-2.2.12.tar.gz

Apache缓存使用配置
wget http://archive.apache.org/dist/httpd/httpd-2.2.12.tar.gztar zxvf httpd-2.2.12.tar.gzcd httpd-2.2.12./configure \\--prefix=/application/apache2.2.12 \\--enable-deflate \\--enable-expires \\--enable-headers \\--enable-modules=most \\--enable-so \\--with-mem=worker \\--enable-rewrite \\--enable-cache \\--enable-disk-cache \\--enable-file-cache \\--enable-mem-cachemakemake installmkdir /var/htmlchown -R apache /var/htmlvi httpd.conf<Directory \"/var/html\">    Options -Indexes FollowSymLinks    AllowOverride None    Order allow,deny    Allow from all</Directory>

03

基于硬盘文件的缓存

Apache缓存使用配置

基于硬盘文件存储的缓存由mod_disk_cache模块实现,配置示例:

CacheDefaultExpire 86400CacheDefaultExpire 86400CacheEnable disk /var/htmlCacheRoot /var/testcacheCacheDirLevels 3CacheDirLength 4CacheMaxFileSize 1048576CacheMinFileSize 1

把上面的配置加到Apache的httpd.conf文件中,如果缓存相关的模块都已经编译进了Apache的核心,则无需加载模块,直接就能使用上面的指令。指令的详细说明如下:

CacheDefaultExpire:设定缓存过期的时间(秒),默认是1小时,只有当缓存的文档没有设置过期时间或最后修改时间时这个指令才会生效

CacheEnable:启用缓存,第1个参数设置为disk,第2个参数是缓存文件的绝对路径

CacheRoot:缓存文件所在的目录,运行Apache的用户需要添加读写权限。

CacheDirLevels:缓存目录的深度,默认是3。

CacheDirLength:缓存目录名的字符长度,默认是4。

CacheMaxFileSize和CacheMaxFileSize:缓存文件的最大值和最小值(byte),当超过这个范围时将不再缓存,这里设置为1M和10bytes基于硬盘文件存储的文件基本上就这些内容,设置好后重启Apache应该就能使用了。一切正常的话,可以在缓存目录下看到Apache自动建立的一些目录和缓存的数据文件。

04

基于内存的缓存

Apache缓存使用配置

基于内存的缓存主要由mod_mem_cache模块实现,配置示例:

CacheEnable mem /var/htmlMCacheMaxObjectCount 20000MCacheMaxObjectSize 1048576MCacheMaxStreamingBuffer 65536MCacheMinObjectSize 10MCacheRemovalAlgorithm GDSFMCacheSize 131072LoadModule cache_module modules/mod_cache.soLoadModule mem_cache_module modules/mod_mem_cache.soCacheEnable mem /var/htmlMCacheSize 131072MCacheRemovalAlgorithm LRUMCacheMaxObjectCount 1009MCacheMaxObjectSize 10000MCacheMinObjectSize 10MCacheMaxStreamingBuffer 5000#CacheMaxExpire 864000#CacheDefaultExpire 86400CacheDisable /php

上面一些指令的说明如下:

CacheEnable:启用缓存,使用基于内存的方式存储

MCacheMaxObjectCount:在内存中最多能存储缓存对象的个数,默认是1009。

MCacheMaxObjectSize:单个缓存对象最大值,默认10000bytes

MCacheMaxStreamingBuffer:在缓冲区最多能够放置多少的将要被缓存对象的尺寸,这里设置为5000,该值通常小于100000或MCacheMaxObjectSize设置的值。

MCacheMinObjectSize:单个缓存对象最小为10bytes,默认为1bytes

MCacheRemovalAlgorithm:清除缓存所使用的算法。

MCacheSize:缓存数据最多能使用的内存,单位是kb,默认是100kb,这里设置为128M

保存重启Apache基于内存的缓存系统应该就能生效了,根据需要可以使基于内存的存储或硬盘文件的存储方式一起使用,只要指明不同的URL路径即可。

缓存测试

for n in `ls /var/html`;do curl ip/$n >/dev/null;donefree -m

05

注意事项

Apache缓存使用配置

使用缓存需要注意如下事项:

要使用缓存,必须使用指令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:”中包含了“*”,不会被缓存。

06

其它一些指令的介绍

Apache缓存使用配置

如果你的网站有几个文件的访问非常频繁而又不经常变动,则可以在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的缓存功能,可以让你的web服务速度提升不少。

Apache缓存使用配置

文章作者:韩俊凯

手绘插画:岳    媛

原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/32829.html

Like (0)
EBCloud的头像EBCloud
Previous 2024年4月2日 下午3:28
Next 2024年4月2日 下午3:28

相关推荐

  • 主根服务器是什么?

    主根服务器是什么?这个问题一直困扰着许多人,尤其是那些对网络互联网服务器行业感兴趣的人。今天,我们就来揭开这个神秘的面纱,一起探究主根服务器的定义及作用、工作原理、重要性以及如何选…

    行业资讯 2024年4月15日
    0
  • 为什么大厂用go,为什么现在大厂不好进

    虽然各大厂商都采取了各种措施来防止DNS污染,但仍然会对企业造成一定的影响。首先,当发生DNS污染,用户无法访问您的网站时,会影响您公司的声誉和可信度。其次,应对恶意攻击需要大量的…

    行业资讯 2024年5月13日
    0
  • cdn加速服务器的作用及国内价格分析

    随着互联网的发展,网络流量越来越大,网站访问速度也成为了用户关注的重点。为了解决这一问题,CDN加速服务器应运而生。那么什么是CDN加速服务器?它又有什么作用?国内又有哪些知名的C…

    行业资讯 2024年4月11日
    0
  • 企业邮箱怎么办理?

    你是否还在为企业邮箱的办理问题而烦恼?不知道如何选择适合的企业邮箱服务商,也不清楚办理的步骤和流程?别担心,今天我就来为你解答这些问题。什么是企业邮箱?它有哪些功能和优势?如何选择…

    行业资讯 2024年4月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注