在centos 6 上yum 安装的httpd,默认没有开启压缩传输和图片过期,严重影响网页加载速度。而这两项功能在前端测试工具pagespeed和yslow里都是最高优先级的网页优化选项,但凡web服务器都需要。
主要针对的是文本、js、css,图片等静态内容,除了图片有较少的压缩价值之外,其余的都可以压缩传输,进行浏览器缓存。
创建一个文件/etc/httpd/conf.d/tunning.conf 可以实现上述功能,是对apache默认行为的有效补充。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<code><IfModule mod_deflate.c></code>
<code> </code><code><Location /></code>
<code> </code><code># Insert filter</code>
<code> </code><code>SetOutputFilter DEFLATE</code>
<code> </code><code># Netscape 4.x has same problems...</code>
<code> </code><code>BrowserMatch ^Mozilla</code><code>/4</code> <code>gzip</code><code>-only-text</code><code>/html</code>
<code> </code><code># Netscape 4.06-4.08 have some more problems</code>
<code> </code><code>BrowserMatch ^Mozilla</code><code>/4</code><code>\.0[678] no-</code><code>gzip</code>
<code> </code><code># MSIE masquerades as Netscape, but it is fine</code>
<code> </code><code># BrowserMatch \bMSIE !no-gzip !gzip-only-text/html</code>
<code> </code><code># NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48</code>
<code> </code><code># the above regex won't work. You can use the following</code>
<code> </code><code># workaround to get the desired effect:</code>
<code> </code><code>BrowserMatch \bMSI[E] !no-</code><code>gzip</code> <code>!</code><code>gzip</code><code>-only-text</code><code>/html</code>
<code> </code><code># Don't compress images and other</code>
<code> </code><code>SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-</code><code>gzip</code> <code>dont-vary</code>
<code> </code><code>SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-</code><code>gzip</code> <code>dont-vary</code>
<code> </code><code>SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-</code><code>gzip</code> <code>dont-vary</code>
<code> </code><code>AddOutputFilterByType DEFLATE text</code><code>/html</code> <code>text</code><code>/plain</code> <code>text</code><code>/xml</code> <code>text</code><code>/css</code>
<code> </code><code>AddOutputFilterByType DEFLATE application</code><code>/x-javascript</code>
<code> </code><code># Make sure proxies don't deliver the wrong content</code>
<code> </code><code>#Header append Vary User-Agent env=!dont-vary</code>
<code> </code><code><</code><code>/Location</code><code>></code>
<code> </code><code><</code><code>/IfModule</code><code>></code>
<code><IfModule mod_expires.c></code>
<code> </code><code>ExpiresActive On</code>
<code> </code><code>ExpiresByType image/* </code><code>"access plus 1 month"</code>
<code> </code><code>ExpiresByType text</code><code>/css</code> <code>"access plus 1 month"</code>
<code> </code><code>ExpiresByType text</code><code>/javascript</code> <code>"access plus 1 month"</code>
<code> </code><code>ExpiresByType application</code><code>/x-javascript</code> <code>"access plus 1 month"</code>
<code><</code><code>/IfModule</code><code>></code>
<code><IfModule mod_headers.c></code>
<code> </code><code>Header </code><code>unset</code> <code>Server</code>
<code> </code><code>Header </code><code>unset</code> <code>X-Powered-By</code>
另外,作为web服务器,apache不常用的模块,完全可以精简掉。
<code>#LoadModule ldap_module modules/mod_ldap.so</code>
<code>#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so</code>
<code>#LoadModule dav_module modules/mod_dav.so</code>
<code>#LoadModule dav_fs_module modules/mod_dav_fs.so</code>
<code>#LoadModule proxy_module modules/mod_proxy.so</code>
<code>#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so</code>
<code>#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so</code>
<code>#LoadModule proxy_http_module modules/mod_proxy_http.so</code>
<code>#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so</code>
<code>#LoadModule proxy_connect_module modules/mod_proxy_connect.so</code>
<code></code>
本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/1214519,如需转载请自行联系原作者