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 的缓存功能,可以让你的网站速度提升不少
- 浏览: 169250 次
- 性别:
- 来自: 南京
最新评论
-
lvzhou_31:
msgpack-0.5.1-devel.jar 有么
msgpack -
lvzhou_31:
lvzhou_31 写道能不能把msgpack-0.5.1-d ...
msgpack -
lvzhou_31:
能不能把msgpack-0.5.1-devel.jar给下。m ...
msgpack -
dxqrr:
mark下
MyBatis缓存加载机制/自定义二级缓存 -
wulixiaoxue:
好东西,看看哈
mongodb使用 java
相关推荐
Solr提供了多种缓存策略,你可以根据实际需求调整。例如,可以通过`autowarmCount`参数设置预热数量,通过`size`和`initialSize`控制缓存大小。对于`regenerator`,如果你选择使用Memcached,可能不需要Solr的默认...
MySQL 的配置文件是/etc/my.cnf, 这个文件中定义了 MySQL 的各种设置,例如数据库连接参数、缓存设置等。 八、 PHP 的配置文件 PHP 的配置文件是/etc/php.ini, 这个文件中定义了 PHP 的各种设置,例如上传文件...
Apache图片服务器是一款基于Apache HTTP Server的专门...以上就是关于Apache图片服务器的安装和使用方法。请根据实际情况调整步骤,并参考官方文档以获取更详细的配置信息。祝你成功搭建并愉快地使用Apache图片服务器!
Apache Ignite是一款新一代的数据库缓存系统,它为快速发展的数据存储和处理提供了显著的解决方案。Ignite支持RDBMS、NoSQL和HDFS等多种底层存储系统,以应对大规模数据的存储挑战。 随着数据量的持续增长,如何...
也可以将APACHE服务器作为缓存服务器,缓存静态网页,以减少JBOSS服务器的压力。 JBOSS与APACHE的整合可以提高Web应用程序的性能和可扩展性,提高系统的可靠性和安全性,同时也可以降低系统的成本和复杂度。
此外,Apache2支持多种操作系统,包括Linux、Windows、Mac OS X等。 在安装Apache2的过程中,`apache2.exe`文件通常是Windows平台上的安装程序。运行此文件将引导用户完成安装步骤,包括选择安装路径、设置端口号、...
Nginx支持多种缓存控制指令,例如proxy_cache、proxy_cache_valid等,能够指定哪些响应需要被缓存,以及缓存的有效时间。这些指令在http、server或者location块中配置。 另外,Nginx还可以通过模块控制缓存的大小和...
4. **Web服务器缓存**:Web服务器如Nginx、Apache等可以缓存静态文件,减少对应用服务器的压力。 5. **客户端浏览器缓存**:浏览器会缓存网页资源,减少对服务器的请求,提高页面加载速度。 **操作系统缓存** - ...
4. **性能优化**:Apache可以通过多种方式优化性能,如多进程或线程模型、预读取、缓存机制以及与其他服务器软件的负载均衡。 5. **兼容性**:Apache能够与各种编程语言(如PHP、Python、Perl等)和数据库(如MySQL...
Apache支持多种MPM,包括worker和prefork等,它们各有优劣,适用于不同的应用场景。 “Apache中的环境变量”部分会描述Apache HTTP Server如何使用环境变量来影响其行为或为CGI和SSI等提供额外的信息。 “Apache ...
8. **缓存机制**:通过mod_cache模块,Apache可以缓存静态内容,提高响应速度。 9. **URL重写**:mod_rewrite模块允许开发者通过规则定义,实现动态URL到静态URL的转换,或者根据特定条件重定向请求。 10. **集成...
在安全方面,Apache提供了多种策略来保护服务器。例如,通过设置`.htaccess`文件,可以限制特定目录的访问权限,或者通过SSL/TLS协议支持HTTPS,提供加密的通信,保护用户数据的安全。 Apache 2.2.25的安装文件`...
10. **性能优化**:通过对源代码的分析,我们可以学习如何调整Apache配置以提高服务器性能,如缓存机制、连接超时设置、内存管理策略等。 这份PDF文档将对以上所有主题进行深入解析,为读者提供了一次深入了解...
4. **性能优化**:Apache 2.2提供了多种性能优化策略,如MPM(多进程模块)的选择,预读取(Prefork)、线程化(Worker)或者事件驱动(Event)模式,以及缓存机制和GZIP压缩等。 5. **错误处理与调试**:手册会...
1. **模块化设计**:Apache通过模块化设计,可以灵活地添加或移除功能,如SSL/TLS安全传输、URL重写、访问控制、缓存等。 2. **高性能**:Apache采用预读取和多进程/线程模型,能有效处理高并发请求,提供高效的...
- **调整缓存策略**:合理的缓存设置能够极大地减少对外部资源的请求,提高访问速度。 - **使用代理和负载均衡**:在高流量场景下,通过代理服务器或负载均衡技术分发请求,分散单个服务器的压力。 **Apache配置...
Apache2项目由Apache软件基金会维护,它支持多种操作系统,包括Linux、Windows、Mac OS X等。Apache2的特点包括高度的可扩展性、稳定性、灵活性和丰富的模块库。 1. **模块化设计**:Apache2的核心模块负责处理基本...
它支持多种缓存策略,如LRU(Least Recently Used)、LFU(Least Frequently Used)以及Time-to-Live和Time-to-Idle等。Ehcache的核心特性包括: 1. 内存和磁盘存储:当内存中的缓存数据达到预设限制时,Ehcache...