I CAN'T GIVE YOU THE WORLD, BUT I CAN GIVE YOU MY WORLD.

如何设置浏览器缓存?优化Apache的网站加载速度

这是博客的第一贴。好了,废话不多说:)

首先,我们先要明白为什么要设置浏览器的缓存。

浏览器的缓存存在于服务器和客户端之间。浏览器缓存密切注视着服务器-客户端之间的通信,监控客户端的各项URL请求,并且把请求输出(例如html页面、 图片、音频视频、文件等)另存一份;然后,如果下一个请求是相同的URL,则直接使用客户端保存的副本,而不是再次请求源服务器。如果是再次发出URL请求,就会造成服务器的额外负担,我们现在的目的就是如何减少客户端对服务器的“额外请求”,这就是我们为什么要设置浏览器缓存的意义。

《如何设置浏览器缓存?优化Apache的网站加载速度》

而使用浏览器的缓存的具体作用是

    • 减缓服务器负载的压力    给网络资源设定有效期之后,用户可以重复使用本地的缓存,减少对源服务器的请求,间接降低服务器的压力。同时,搜索引擎的爬虫机器人也能根据过期机制降低爬取的频率,也能有效降低服务器的压力。
    • 优化网站页面打开速度    缓存比源服务器离客户端更近,因此,从缓存请求内容比从源服务器所用时间更少,缓存的使用能够明显加快页面打开速度,达到更好的体验。
    • 减少网络带宽资源的消耗    无论对于网站运营者或者用户,带宽都代表着金钱,当Web缓存副本被使用时,只会产生极小的网络流量,可以有效的降低运营成本。

现在的大型网站,随便一个页面都是一两百个请求,每天 pv 都是亿级别,如果没有缓存,用户体验会急剧下降、同时服务器压力和网络带宽都面临严重的考验。  缓存和重用以前获取的资源的是优化网页性能很重要的一个方面。

《如何设置浏览器缓存?优化Apache的网站加载速度》

怎么样知道我们的网站是否正确配置了缓存规则?

利用谷歌页面优化工具具体分析你的网站到底有没有正确配置好浏览器缓存规则:Insights

《如何设置浏览器缓存?优化Apache的网站加载速度》

通过工具分析发现网站没有设置浏览器缓存

《如何设置浏览器缓存?优化Apache的网站加载速度》

第一,找到Apache配置文件 httpd.conf

Apache设置浏览器缓存是通过修改配置文件 httpd.conf 来实现的,所以首先要找到并打开httpd.conf ,这个文件的位置在\Apache安装目录\conf\下。如果你不知道Apache的安装目录,那么对于windows服务器,你可以在C盘(D盘、E盘)通过搜素“httpd.conf”来找到该文件。对于linux用户,可以通过命令

find / -name httpd.conf

来找到该文件。

第二,更改Apache配置文件 httpd.conf

找到了 httpd.conf 后,用记事本(或任何编辑器)打开它。

Ctrl+F搜索

#LoadModule expires_module modules/mod_expires.so

#LoadModule expires_module modules/mod_expires.so的注释符号“#”去掉。

《如何设置浏览器缓存?优化Apache的网站加载速度》

然后在最后添加如下代码(具体参数可以自行修改或者添加):

<IfModule mod_expires.c>
#打开缓存
ExpiresActive On
#默认对所有资源缓存600秒
ExpiresDefault A600
#png格式的资源缓存5秒
ExpiresByType image/png A5
#jpg格式的资源缓存50秒
ExpiresByType image/jpg A50

#好含这些后缀的资源,都缓存100秒
<FilesMatch “\.(jpg|jpeg|png|gif|swf)$”>
ExpiresDefault A100
</FilesMatch>

</IfModule>

 

上面这段代码也可以添加在网站主目录下的.htaccess文件内容中。

保存后再次测试效果:

《如何设置浏览器缓存?优化Apache的网站加载速度》

第二种Apache浏览器缓存设置方法:

在Apache开启mod_headers模块,方法同上面。在Apache配置文件httpd.conf文件编辑中,按键“Ctrl+F”搜索模块

#LoadModule headers_module modules/mod_headers.so

如果没有开启模块,则删除“#”注释。

然后在网站主目录下寻找.htaccess文件内容中添加:

#包含这些后缀的资源都缓存33秒
<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf)$”>
Header set Cache-Control “max-age=33”
</FilesMatch>

如果没有.htaccess文件则自行创建,编辑加入。

第三种方法:
在.htaccess添加以下内容:

FileEtag INode Mtime Size

要关闭etag,则添加以下内容:

FileEtag none

最后的小结:Apache设置浏览器缓存的优先级为:第三种方法>第二种方法>第一种方法,设置完成建议重启Apache再自行检测有没有成功。

点赞
  1. abing says:

    Test review :smile:

    1. abing says:

      try again :eek: