网站建设|wordpress网站加速之使用服务器缓存控制来提高性能

网站加速
缓存是在高速媒体(通常是sram或ram)中临时存储频繁访问的数据,以便更有效地检索。web缓存通过浏览器,代理或服务器缓存将经常使用的对象存储在离客户端较近的位置。通过将“新鲜”对象存储在离用户较近的位置,可以避免到原始服务器的往返,减少带宽消耗,服务器负载,最重要的是延迟。本文介绍如何配置apache服务器以实现更高效的缓存,以节省带宽并提高性能。
缓存不仅适用于静态站点,甚至动态站点也可以从缓存中受益。图形和多媒体通常不会像(x)html文件那样频繁地更改。像徽标,标题和导航这样很少改变的图形可以被赋予更长的到期时间,而像xhtml和xml文件那样更频繁地更改的资源可以被赋予更短的到期时间。通过设计具有缓存的站点,您可以定位不同类别的资源,只需几行代码即可为它们提供不同的到期时间。
三种缓存方式有三种方法可以为您的网站设置缓存控制规则。
通过<meta>标签(<meta http-equiv=expires...>)通过设置http头(cgi脚本等)以编程方式通过web服务器配置文件(httpd.conf)本文介绍了通过服务器配置文件进行缓存控制的第三种方法。第一种方法适用于浏览器,但大多数中间代理服务器不解析html文件,它们寻找http标头来设置缓存策略。的编程方式设置高速缓冲存储器控制头(第二个方法expires和cachecontrol例如)可以动态cgi脚本输出动态数据是有用的。
缓存新鲜度保证为了缓存web对象,源服务器上游的浏览器和代理服务器必须能够计算“新鲜度生命周期”,或者从先前访问或修改对象多长时间才能从缓存中显示。http主要通过客户端,代理和源服务器之间的简短http头对话来确定这个数字甜瓜是否正在挤压,以确定重用缓存对象是否可以,或者重新加载资源以获得新的资源。以下是我们徽标图片的request / response序列示例l.gif。
host: www.websiteoptimization.com user-agent: mozilla/5.0 (windows; u; windows nt 5.1; rv:1.7.3) gecko/20041001 firefox/0.10.1 accept: image/png,*/*;q=0.5 accept-language: en-us,en;q=0.5 accept-encoding: gzip,deflate accept-charset: iso-8859-1,utf-8;q=0.7,*;q=0.7 keep-alive: 300 connection: keep-alive referer: http://www.websiteoptimization.com/
我们的服务器响应如下:
http/1.1 200 ok date: mon, 25 oct 2004 11:55:45 gmt server: apache/1.3.31 cache-control: max-age=2592000 expires: wed, 24 nov 2004 11:55:45 gmt last-modified: sat, 19 jun 2004 15:25:10 gmt etag: 7b80d9-891-40d45ad6 accept-ranges: bytes content-length: 2193 keep-alive: timeout=15, max=99 connection: keep-alive content-type: image/gif
此图片最后修改于6月19日,距离上次访问时间为30天。从这些响应标头中可以清楚地看出,此对象不会经常更改,并且可以安全地缓存长达一个月。在客户端向代理或源服务器查询特定对象之后,如果该对象被验证为仍然是新鲜的,则从缓存返回该对象。如果不是,则从原始服务器重新加载对象以获取新副本。
使用mod_expires和mod_headers进行缓存控制对于apache,mod_expires和mod_headers通过从服务器发送的http头来处理缓存控制。由于默认情况下未安装它们,请让服务器管理员为您安装它们。对于apache / 1.3x,通过将以下行添加到httpd.conf配置文件来启用expires和headers模块。
loadmodule expires_module libexec/mod_expires.so loadmodule headers_module libexec/mod_headers.so addmodule mod_expires.c addmodule mod_headers.c ... addmodule mod_gzip.c
请注意,加载顺序在apache / 1.3x中很重要,mod_gzip必须在所有其他模块之后加载最后。
对于apache / 2.0,请在httpd.conf文件中启用这样的模块。
loadmodule expires_module modules/mod_expires.so loadmodule headers_module modules/mod_headers.so loadmodule deflate_module modules/mod_deflate.so
mod_deflate是apache / 2.0中的本机压缩模块(尽管mod_gzip在处理任意浏览器方面做得更好)。在这种情况下,加载顺序无关紧要,因为apache / 2.0会为您处理此问题。
通过扩展目标文件进行缓存为现有站点启用缓存控制标头的一种快速方法是按扩展名定位文件。虽然这种方法有一些缺点(特别是文件扩展的要求),但它具有简单的优点。要将mod_expires设置expiresactive为on。
expiresactive on
接下来定位您网站的根html目录,以便一举为您的网站启用缓存。
<directory /home/website/public_html> options followsymlinks multiviews allowoverride all order allow,deny allow from all expiresdefault a300 <filesmatch \.html$> expires a86400 </filesmatch> <filesmatch \.(gif|jpg|png|js|css)$> expires a2592000 </filesmatch> </directory>
expiresdefault a300在访问(a)后将默认到期时间设置为300秒。使用m300会在文件修改后将到期时间设置为300秒。该filesmatch段将所有.html文件的缓存控制标头设置为86400秒(1天)。第二filesmatch部分将所有图像,外部javascripts和css文件的缓存控制头设置为2592000秒(30天)。
请注意,您可以使用多个目录部分更精细地定位文件,如下所示:
<directory /home/website/public_html/images/logos/>
对于真正动态的内容,您可以通过设置零秒的年龄来强制不缓存资源,并且不将资源存储在任何位置。
<directory /home/website/cgi-bin/> header set cache-control max-age=0, no-store </directory>
按mime类型定位文件上述方法的缺点是依赖于文件扩展名的存在。在某些情况下,网站管理员选择使用无扩展名url来实现可移植性和性能(请参阅使用内容协商重写url)。更好的方法是使用expiresbytypemod_expires模块的命令。顾名思义,expiresbytype定位用于按mime类型缓存的资源,就像这样。
expiresactive on expiresdefault access plus 300 seconds <directory /home/website/public_html> options followsymlinks multiviews allowoverride all order allow,deny allow from all expiresbytype text/html access plus 1 day expiresbytype text/css access plus 1 day expiresbytype text/javascript access plus 1 day expiresbytype image/gif access plus 1 month expiresbytype image/jpg access plus 1 month expiresbytype image/png access plus 1 mon
上一个:网络营销价格的定义与价格战
下一个:讲解为什么企业要建设网站的几个知识点
应城网站建设,应城做网站,应城网站设计