当前web服务器功能异常强大,除了能够提供高性能的HTTP服务,还可以提供反向代理、页面缓存的功能。比较流行的web服务器如:Apache、Nginx。这些服务器都已经提供了成熟的插件,实现缓存功能。只需要我们在安装这些web服务器的时候,将所需的插件编译进去,并通过配置文件配置说明,就可以使用。
一、Apache缓存
1、依赖组件
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即可。
2、缓存方式
具体来说,Apache的缓存方式有两种:一种是基于磁盘文件的缓存,由mod_disk_cache实现;另一种是使用内存缓存,由mod_mem_cache实现。不过他们都依赖mod_cache模块,mod_cache模块提供了一些缓存配置指令供他们使用。而mod_file_cache模块是搭配mod_mem_cache模块使用的。
3、基于硬盘文件的缓存
基于硬盘文件存储的缓存由mod_disk_cache模块实现,简单配置如下:
<ifModule mod_cache.c> CacheDefaultExpire 86400 <ifModule mod_disk_cache.c> CacheEnable disk / CacheRoot /tmp/apacheCache CacheDirLevels 5 CacheDirLength 5 CacheMaxFileSize 102400 CacheMinFileSize 10 </ifModule mod_disk_cache.c> </ifModule mod_cache.c>
把上面的配置添加到Apache的httpd.conf文件中。上面的指令详细说明如下:
- CacheDefaultExpire:设定缓存过期的时间(秒),模式是1小时,只有当缓存的文档没有设置过期时间或最后修改时间时这个指令才会生效。
- CacheEnable:启用缓存,第一个参数是缓存类型,这里就是disk了。第二个参数是缓存路径,指的是URL路径,这里是缓存所有的东西,直接写上“/”即可,如:“/docs”则只缓存/docs下的所有文件。
- CacheRoot:缓存文件所在的目录,运行Apache的用户(如daemon或nobody)要能对其进行读写,如果不清楚的话可以直接设置成777,请管理员设置该目录的访问控制权限。
- CacheDirLevels:缓存目录的深度,默认是3,这里设置为5。
- CacheDirLength:缓存目录的字符长度,默认是4,这里设置为5。
- CacheMaxFileSize和CacheMinFileSize:缓存文件的最大值和最小值(byte),当超过这个范围时将不再缓存。
4、基于内存的缓存
基于内存的缓存主要由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 mod_mem_cache.c> </ifModule mod_cache.c>
上面指令详解如下:
- CacheEnable:启用缓存,使用基于内存的方式存储。
- MCacheMaxObjectCount:在内存中最多能存储缓存对象的个数,默认是1009,这里设置为20000.
- MCacheMaxObjectSize:单个缓存对象最大为多少。默认是10000bytes,这里设置为1M.
- MCacheMaxStreamingBuffer:在缓冲区最多能够放置多少将要被缓存对象的尺寸,这里设置为65536,通常该值小于100000或MCacheMaxObjectSize设置的值。
- MCacheMinObjectSize:单个缓存对象最小为10bytes,默认为1bytes。
- MCacheRemovalAlgorithm:清除缓存所使用的算法,默认是GDSF,还有就是LRU。
- MCacheSize:缓存数据最多使用的内存,单位是kb。默认是100Kb,这是设置为128M。
注意:配置完成后需要重启Apache才能失效。并且根据缓存的需要,可以结合基于内存和硬盘的文件缓存一起使用,只要指明不同的URL路径即可。
5、注意事项
- 要使用缓存,必须使用指令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-cotrol:"中包含“no-sotre",除非设置了指令DCacheStoreNoStore On,否则不会被缓存。
- 如果返回内容的头部信息”vary“包含了”*“,不会被缓存。
6、其他一些使用技巧
①如果你的网站有几个文件的访问非常频繁而又不经常变动,则可以在 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
7、更多了解
如果你想要更多了解这方面的内容,请访问:http://www.t086.com/code/apache2.2/caching.html
相关推荐
#### 一、Apache与静态页面缓存 对于Apache服务的静态页面,Last-Modified和Etag两个头部字段尤为关键。Last-Modified字段记录文件最后一次修改的时间,而Etag则基于文件内容生成一个唯一标识符,通常包括文件的...
Apache HTTP Server,简称Apache,是世界上最流行的Web服务器软件之一,它开源、免费,并且具有高度的可扩展性和稳定性。Apache 2.2.3-win32-x86版本是专为32位Windows系统设计的,支持多种操作系统平台,包括...
Apache服务器自发布以来,迅速成为全球最受欢迎的Web服务器之一,市场份额超过60%。 #### 二、Apache的发展历程 - **起源**:Apache最初是从NCSA Web服务器的内核代码和一系列补丁程序发展而来。 - **正式发布**:...
同时,通过mod_proxy_cache模块,Apache还可以作为缓存服务器,存储经常请求的内容,减少对后端服务器的压力。 五、内容过滤与优化 Apache转发服务器可以通过mod_proxy_html等模块对后端服务器的响应内容进行修改...
ApacheHTTP服务器的缓存机制与代理服务器配置.docx
Apache服务器作为最广泛使用的HTTP服务器之一,经常被用于处理大量并发请求。当单个Apache服务器无法满足性能需求时,可以通过设置集群和负载均衡策略来分散压力,提高整体服务性能。 首先,Apache服务器集群是指将...
* 使用缓存:可以使用缓存来减少服务器负载。 * 使用压缩:可以使用压缩来减少数据传输量。 * 使用负载均衡:可以使用负载均衡来分配服务器负载。 Apache 服务器是一个功能强大且灵活的 Web 服务器软件,通过合理地...
相比之下,Cherokee 服务器的性能要好得多。在我们测试中,Cherokee 服务器在高并发环境下保持了非常好的速度,内存占用极小。这是因为 Cherokee 服务器使用了 FastCGI协议来执行 PHP,这使得它的性能远远超过 ...
除了作为Web服务器和反向代理外,Nginx还能用来作缓存服务器。缓存可以减少后端服务器负载,加速网页加载时间,提高用户体验。 Nginx作为缓存服务器,可以将代理服务器转发的请求结果缓存到磁盘上,当相同的请求...
Apache的核心特性之一是模块化,允许用户根据需求加载或卸载模块。手册会详细解释如何启用、禁用和配置各种模块,例如mod_rewrite用于URL重写,mod_ssl用于HTTPS支持,mod_deflate用于内容压缩,以及mod_security...
Tomcat缓存是Apache Tomcat服务器中用于提升性能的一个重要机制。它允许Tomcat存储已处理的静态资源或动态内容的副本,以便后续请求时能够快速响应,减少对磁盘和网络I/O的依赖,从而提高应用的整体响应速度。本文将...
Apache服务器作为一款开源的Web服务器软件,广泛应用于Internet网站的搭建,其高稳定性和可扩展性使其成为最受欢迎的服务器之一。下面将从几个方面详细介绍Apache服务器配置与使用的工作笔记知识点: 1. 安装与部署...
Apache作为最流行的Web服务器软件之一,自然需要进行细致的调优。生产环境中的Apache服务在部署前需要从安全和性能两个角度进行全面的优化调试,以确保其能够高效、稳定地提供服务。 从安全角度来说,隐藏***e...
这本书籍涵盖了从安装、配置到优化和安全管理的全过程,是任何希望深入理解和掌握Apache服务器运维技能的人士的必备参考资料。Apache HTTP服务器是全球最广泛使用的Web服务器软件,以其开源、稳定和可扩展性著称,...
Apache服务器软件是世界上最广泛使用的Web服务器之一,以其开源、免费和高度可定制的特性而闻名。这个软件提供了在互联网上托管网站和应用的基础,对于学习网络服务器管理和开发人员来说是必不可少的知识点。 ...
Apache服务器自身支持缓存模块,可以配置httpd.conf来开启缓存功能。服务器通过配置可以缓存特定的网页内容,提高响应速度。当网站外接cache或squid服务器进行Web加速时,需要激活Apache的mod_cache模块,并进行相应...
- 设置服务器缓存控制,以减少不必要的重复数据传输。 - 对图片、CSS、JavaScript等静态资源进行压缩和缓存设置,以加快页面加载速度。 9. 日志管理: - 配置服务器日志记录,包括访问日志和错误日志的路径、...