Apache自动优化前端页面的模块mod_pagespeed应用
1.加载pagespeed.conf文件
# vim httpd.conf
Include conf/extra/pagespeed.conf
2.mod_pagespeed实例说明
# 加载mod_pagespeed模块
LoadModule pagespeed_module /usr/local/apache2.2.15/modules/mod_pagespeed.so
# 判断加载mod_deflate模块,如果没有加载将加载。mod_pagespeed自动启用mod_deflate压缩模块。
# mod_deflate模块提供deflate输出过滤器,允许服务器在将输出内容发送到客户端前进行压缩,以节省宽带。
<IfModule !mod_deflate.c>
LoadModule deflate_module /usr/local/apache2.2.15/modules/mod_deflate.so
</IfModule>
# mod_pagespeed模块的配置参数指令必须包含在IfModule中。
<IfModule pagespeed_module>
# 开启(on)或关闭(off)mod_pagespeed。
ModPagespeed on
# Aoache直接将所有的HTML输出发送到mod_pagespeed处理程序。输出过滤器用来分析,优化和重新序列化HTML内容。
AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html
# ModPagespeedFileCachePath 和ModPagespeedGeneratedFilePrefix目录对Apache运行用户必须是可写的。
ModPagespeedFileCachePath "/usr/local/apache2.2.15/mod_pagespeed/cache/"
ModPagespeedGeneratedFilePrefix "/usr/local/apache2.2.15/mod_pagespeed/files/"
# mod_pagespeed重写标准。 ModPagespeedRewriteLevel有效的标准值有四个:PassThrough, CoreFilters, TestingCoreFilters, AllFilters。默认的重写标准是CoreFilters,使用一系列的重写过滤器,对大部分网页是比较安全的。对于大多数网站来说,可以不必更改重写标准,使用ModPagespeedDisableFilters 和 ModPagespeedEnableFilters规则来进行适当的微调。
# ModPagespeedRewriteLevel CoreFilters
# 明确禁用指定的过滤器,指令后面加上以逗号分隔的过滤器名称,可以重复。
# ModPagespeedDisableFilters rewrite_javascript
# 明确启用指定的过滤器。
# 添加头信息。
ModPagespeedEnableFilters add_head
# 将多个头信息合并成一个,还可以改变内容顺序。
ModPagespeedEnableFilters combine_heads
# 测试过滤器。完全删除页面脚步,这将破坏功能,默认是禁用的。
# ModPagespeedEnableFilters strip_scripts
# 内嵌大块的Javascript和css可以移动到外部文件,这样它们就可以被缓存在浏览器中,即使HTML是不缓存的。
ModPagespeedEnableFilters outline_css,outline_javascript
# 将css元素移动到头信息中。
ModPagespeedEnableFilters move_css_to_head
# 将多个css元素合并成一个。
ModPagespeedEnableFilters combine_css
# 重写Javscript和CSS文件,删除多余的空格和注释。
ModPagespeedEnableFilters rewrite_css,rewrite_javascript
# 将CSS和JS小文件,内嵌到HTML文档中。
ModPagespeedEnableFilters inline_css,inline_javascript
# 优化图片重新编码成较小的字节大小,删除并不显示的多余像素并内嵌小图片。
ModPagespeedEnableFilters rewrite_images
# 增加宽/高属性来标记它们不存在。
ModPagespeedEnableFilters insert_img_dimensions
# 默认是关闭的。删除HTML文件中的注释。以免破坏Javascript延时执行。
ModPagespeedEnableFilters remove_comments
# 默认是关闭的。删除HTML文件中的多余空格。如果不是应用javascript和css来检测和标记DOM的,可以安全开启这个过滤器。
# ModPagespeedEnableFilters collapse_whitespace
# 删除不符合HTML规格的属性。
ModPagespeedEnableFilters elide_attributes
# 查找出缓存不超过一个月的所有图片,css和javascript,并延长缓存至它们生命周期。这个是安全的行为,因为增加了内容哈希URL,因此如果内容改变URL也将改变,并且可以获得正确的缓存。
ModPagespeedEnableFilters extend_cache
# 删除HTML属性并不需要的引号。
ModPagespeedEnableFilters remove_quotes
# 添加JavaScript的开头和结尾的页允许延迟信息发送回服务器。
ModPagespeedEnableFilters add_instrumentation
# 除了优化HTML资源外,mod_pagespeed还可以对指定的域的资源比如javascript,CSS,图片进行优化。
#
ModPagespeedDomain http://my_site.com
ModPagespeedDomain http://cdn.my_site.com
#
# 域名允许使用通配符*和?。
# 默认情况下,域名下的所有HTML资源被重写。
ModPagespeedAllow *
# ModPagespeedDisallow *
# ModPagespeedAllow http://*my_host.com/*/images/*.png
# ModPagespeedAllow http://*my_host.com/*/styles/*.css
# 设置获取URL的超时时间。默认是5秒。注意:单位是微秒。
ModPagespeedFetcherTimeoutMs 1000
# 设置缓存参数。
# ModPagespeedFileCacheSizeKb 102400
# ModPagespeedFileCacheCleanIntervalMs 3600000
# ModPagespeedLRUCacheKbPerProcess 1024
# ModPagespeedLRUCacheByteLimit 16384
# 设置过滤器参数。
# ModPagespeedCssInlineMaxBytes 2048
# ModPagespeedImgInlineMaxBytes 2048
# ModPagespeedJsInlineMaxBytes 2048
# ModPagespeedCssOutlineMinBytes 3000
# ModPagespeedJsOutlineMinBytes 3000
# 设置任何时刻绑定多少张图片被重写。0代表不绑定。
# ModPagespeedImgMaxRewritesAtOnce 8
# 设置代理,mod_pagespeed记录请求网站的目录。
#ModPagespeedSlurpDirectory ...
# ModPagespeedSlurpReadOnly on
# 开启服务器端的javascript检测和统计信息。
#在每个HTML页面注入两个小块的javascript,用来计算客户端加载呈现页面的时间并报告给服务器。
ModPagespeedEnableFilters add_instrumentation
#
<Location /mod_pagespeed_beacon>
SetHandler mod_pagespeed_beacon
</Location>
# 使用ModPagespeedBeaconUrl指令来更改到不同的目录或服务器。
# <Location /my/path/to/beacon>
# SetHandler mod_pagespeed_beacon
# </Location>
# ModPagespeedBeaconUrl "/my/path/to/beacon?ets="
# ModPagespeedBeaconUrl "http://my_other_server/my_beacon?ets="
# 禁用统计信息。(mod_pagespeed0.9.11.5以上版本才支持)
# ModPagespeedStatistics off
# 查看统计数据。
<Location /mod_pagespeed_statistics>
Order allow,deny
Allow from XXX.XXX.XXX.XXX
SetHandler mod_pagespeed_statistics
</Location>
</IfModule>
<Directory /www/mod_pagespeed_example>
<IfModule headers_module>
<FilesMatch "\.(html|htm)$">
Header unset Etag //关闭HTML文件的Etag
Header set Cache-control "max-age=0, no-cache, no-store" //不缓存
</FilesMatch>
# 图片,样式和javascript的重写URL包含哈希值。
<FilesMatch "\.(jpg|jpeg|gif|png|js|css)$">
Header unset Etag
Header set Cache-control "public, max-age=600" //重新读取文件内容和重新计算哈希值。只要内容不改变,哈希值不会改变,缓存在浏览器中的相关资源将保持。
</FilesMatch>
</IfModule>
</Directory>
3.mod_pagespeed实例
LoadModule pagespeed_module /usr/local/apache2.2.15/modules/mod_pagespeed.so
<IfModule !mod_deflate.c>
LoadModule deflate_module /usr/local/apache2.2.15/modules/mod_deflate.so
</IfModule>
<IfModule pagespeed_module>
ModPagespeed on
AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html
ModPagespeedFileCachePath "/usr/local/apache2.2.15/mod_pagespeed/cache/"
ModPagespeedGeneratedFilePrefix "/usr/local/apache2.2.15/mod_pagespeed/files/"
ModPagespeedRewriteLevel CoreFilters
ModPagespeedEnableFilters add_head
ModPagespeedEnableFilters outline_css,outline_javascript
ModPagespeedEnableFilters move_css_to_head
ModPagespeedEnableFilters combine_css
ModPagespeedEnableFilters rewrite_css,rewrite_javascript
ModPagespeedEnableFilters inline_css,inline_javascript
ModPagespeedEnableFilters rewrite_images
ModPagespeedEnableFilters insert_img_dimensions
ModPagespeedEnableFilters remove_comments
ModPagespeedEnableFilters elide_attributes
ModPagespeedEnableFilters extend_cache
ModPagespeedEnableFilters remove_quotes
ModPagespeedEnableFilters add_instrumentation
ModPagespeedDomain http://www.XXX.com
ModPagespeedFileCacheSizeKb 102400
ModPagespeedFileCacheCleanIntervalMs 3600000
ModPagespeedLRUCacheKbPerProcess 1024
ModPagespeedLRUCacheByteLimit 16384
ModPagespeedCssInlineMaxBytes 2048
ModPagespeedImgInlineMaxBytes 2048
ModPagespeedJsInlineMaxBytes 2048
ModPagespeedCssOutlineMinBytes 3000
ModPagespeedJsOutlineMinBytes 3000
ModPagespeedImgMaxRewritesAtOnce 8
ModPagespeedEnableFilters add_instrumentation
<Location /mod_pagespeed_beacon>
SetHandler mod_pagespeed_beacon
</Location>
<Location /mod_pagespeed_statistics>
Order allow,deny
Allow from XXX.XXX.XXX.XXX
SetHandler mod_pagespeed_statistics
</Location>
</IfModule>
<Directory /www/www.XXX.com>
<IfModule headers_module>
<FilesMatch "\.(shtml|html|htm)$">
Header unset Etag
Header set Cache-control "max-age=0, no-cache, no-store"
</FilesMatch>
<FilesMatch "\.(jpg|jpeg|gif|png|js|css)$">
Header unset Etag
Header set Cache-control "public, max-age=600"
</FilesMatch>
</IfModule>
</Directory>
4.测试:
关闭mod_pagespeed
5.开启mod_pagespeed
6.统计信息