apache加速模块mod_pagespeed的安装

admin 发表于 [Linux] 分类,标签: CentOS Linux SSH 服务器缓存 性能优化
0

在很多童鞋还是感觉自己网站速度不够快而寻找各种加速方法的时候,Google又出了一个给网站加速的模块,apache加速模块mod_pagespeed

早在去年6月,Google 为开发者提供了一个可以给出相关网站优化建议的工具 Page Speed,但是有了建议后的后续执行工作也是很麻烦的。贴心的 Google 特为懒惰型 MJJ们 提供了傻瓜化解决方案:mod_pagespeed。

据称该模块可以有效将网页加载速度提高50%,Google这款加速模块简单的解决了许多复情况的问题:

•如果你的网站采用apache构建服务器,不需要对网站CMS系统进行处理即可应用;

•加速模块可以自行对网络传输的html字节优化及对图象,css进入压缩优化传输;

•智能缓存是一大亮点,它可以自动智能缓存,加速下载。

目前这套优化模块已经应用具于有 850万客户的 GoDaddy 服务器上,而且反响良好。根据此前的一些实践来看, 通过 mod_pagespeed 可以对 Web 性能的多个方面,包括缓存、客户端与服务器之间的连接、载荷大小等进行优化,最大可将页面加载时间缩短 50% 。

1.支持的操作系统和apache 版本:

CentOS/Fedora (32-bit and 64-bit)

Debian/Ubuntu (32-bit and 64-bit)

Apache 2.2


2.安装方式

a.在 Debian/Ubuntu系统,请运行以下命令:

下载32-bit:

 

wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_i386.deb

下载64-bit:

wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb

安装 mod_pagespeed :

dpkg -i mod-pagespeed-*.deb
apt-get -f install

删除下载文件mod_pagespee:

rm mod-pagespeed*.deb

修改域名并重启apache

sudo /etc/init.d/apache2 restart

注:意其中的mod-pagespeed*.deb为对应模块版本文件名

设置pagespeed.conf :
nano /etc/apache2/mods-available/pagespeed.conf


修改域名并重启apache
sudo /etc/init.d/apache2 restart



刷新网站几次,确保安装成功

b.在CentOS/Fedora 系统,请运行以下命令 :

下载32-bit:

wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_i386.rpm

下载64-bit:

wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_x86_64.rpm

安装 mod_pagespeed :

yum install at  (如果您还没有安装过'at')
rpm -U mod-pagespeed-*.rpm

删除下载文件mod_pagespeed

rm mod-pagespeed*.rpm

设置pagespeed.conf :

vi /etc/apache2/mods-available/pagespeed.conf

修改域名并重启apache:

sudo /etc/init.d/apache2 restart

也许您的pagespeed.conf文件不在以上位置,您可以使用查找命令:

find / -name pagespeed.conf

mod_pagespeed配置文件说明:

# 加载mod_pagespeed模块
LoadModule pagespeed_module /usr/local/apache2/modules/mod_pagespeed.so
# 判断加载mod_deflate模块,如果没有加载将加载。mod_pagespeed自动启用mod_deflate压缩模块。
# mod_deflate模块提供deflate输出过滤器,允许服务器在将输出内容发送到客户端前进行压缩,以节省宽带。
LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so

# mod_pagespeed模块的配置参数指令必须包含在IfModule中。
# 开启(on)或关闭(off)mod_pagespeed。
ModPagespeed on

# Apache直接将所有的HTML输出发送到mod_pagespeed处理程序。输出过滤器用来分析,优化和重新序列化HTML内容。
AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html
# ModPagespeedFileCachePath 和ModPagespeedGeneratedFilePrefix目录对Apache运行用户必须是可写的。
ModPagespeedFileCachePath “/var/mod_pagespeed/cache/”
ModPagespeedGeneratedFilePrefix “/var/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
SetHandler mod_pagespeed_beacon

# 使用ModPagespeedBeaconUrl指令来更改到不同的目录或服务器。
#
# SetHandler mod_pagespeed_beacon
#

# ModPagespeedBeaconUrl “/my/path/to/beacon?ets=”
# ModPagespeedBeaconUrl “http://my_other_server/my_beacon?ets=”

# 禁用统计信息。(mod_pagespeed0.9.11.5以上版本才支持)
# ModPagespeedStatistics off

# 查看统计数据。

Order allow,deny
Allow from XXX.XXX.XXX.XXX
SetHandler mod_pagespeed_statistics

Header unset Etag //关闭HTML文件的Etag

Header set Cache-control “max-age=0, no-cache, no-store” //不缓存

# 图片,样式和javascript的重写URL包含哈希值。
Header unset Etag
Header set Cache-control “public, max-age=600″ //重新读取文件内容和重新计算哈希值。只要内容不改变,哈希值不会改变,缓存在浏览器中的相关资源将保持。

mod_pagespeed实例
LoadModule pagespeed_module /usr/local/apache2/modules/mod_pagespeed.so
<ifmodule !mod_deflate.c>
    LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so
</ifmodule>
<ifmodule pagespeed_module>
    ModPagespeed on
        AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html
        ModPagespeedFileCachePath   "/var/mod_pagespeed/cache/"
        ModPagespeedGeneratedFilePrefix  "/var/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 insert_img_dimensions
    ModPagespeedEnableFilters remove_comments
    ModPagespeedEnableFilters elide_attributes
    ModPagespeedEnableFilters collapse_whitespace
    ModPagespeedEnableFilters extend_cache
    ModPagespeedEnableFilters remove_quotes
    ModPagespeedDisableFilters rewrite_images
    ModPagespeedDomain *
    ModPagespeedFileCacheSizeKb          102400
    ModPagespeedFileCacheCleanIntervalMs 3600000
    ModPagespeedLRUCacheKbPerProcess     1024
    ModPagespeedLRUCacheByteLimit        16384
    ModPagespeedCssInlineMaxBytes        2048
    ModPagespeedImgInlineMaxBytes        2048
    ModPagespeedJsInlineMaxBytes         2048
    ModPagespeedCssOutlineMinBytes       3000
    ModPagespeedJsOutlineMinBytes        3000
    ModPagespeedImgMaxRewritesAtOnce        8
    <location /mod_pagespeed_beacon>
        SetHandler mod_pagespeed_beacon
    </location>
    <location /mod_pagespeed_statistics>
        Order Deny,Allow
        Allow from all
        SetHandler mod_pagespeed_statistics
    </location>
</ifmodule>
<directory /www/fromidea>
    <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>

发表我的评论