利用 mod_pagespeed 实现极速

要使用 mod_pagespeed,您需要安装可在 Linux 上运行的 Apache 2.2 版本,32 位或 64 位均可,同时安装mod_deflate 模块。

目前,mod_pagespeed 不支持 Windows 或旧版本的 Apache(根据他们的文档和常见问题解答来看,我认为近期他们不会为这些版本提供支持)。

来自 Google 的 mod_pagespeed Apache 模块被设计为一种 “插入式” 模块,可供 Apache Web 托管商插入其服务器安装,并立即实现页面加载速度的显著提高。 如果您还不确定如何加速您的网站,或者尚未优化您的配置性能,那么此模块就应该是您寻找已久的解决方案。举例来说,对于使用开箱即用配置与安装的 WordPress 博主,此模块能带来很大的改变。

mod_pagespeed 模块在一个模块中结合了优化页面加载速度的最佳实践,并且可自动执行所有必要的步骤。

速度的定义

无论您的 Internet 连接速度如何,您总是希望能够更快地加载您的网页。将页面内容发送给您的 Web 服务器也希望它的速度更快,原因有二:如果企业的服务器速度缓慢,就会导致客户丢失。此外,如果企业为您提供了更快的个别页面加载速度,那么就能将其自己的服务器用于为其他人提供更多页面。您可能每天访问他们的页面一次,但他们每天要为其他客户提供 100,000 次相同的页面。对于这些企业来说,即便是细微的速度提升也有着重大的意义。

就本文的目的而言,我们将从用户的视角定义 “速度”:页面加载时间。能够迅速加载的网页将被视为快速,如 www.google.com,其页面加载时间非常短。相反,如果某个假象站点仅有一台服务器,运行在陈旧的 Pentium II 600 MHz 之上,而且包含 40 个庞大的镜像文件,那么这个站点无疑会非常慢,其页面加载时间非常长。此外,如果一个网页在每天仅有少数人访问时速度较快,在数千名用户都在 10 分钟的时间内访问该网站时,该网站仍然有可能变得极为缓慢。因此,“速度” 定义为使您从 A 点到 B 点所用的时间,其中 A 点 = 您在地址栏中键入某些内容之后按下 “回车键” 的时候,而 B 点 = 页面完全载入浏览器的时间。

从 Web 服务器的角度来看,提高速度(而无需更改硬件)的最佳方法就是更快地发送更少量的数据。更具体地来说,您希望降低机器的延迟(延迟 = 响应时间),并减小传输的数据大小(所传输的数据的物理 Kb 数)。因此,为了 “加速” 一个网站,无论是从 Web 服务的视角,还是从用户的视角来说,您都需要减少服务器的延迟,同时减小所传输的数据大小。

如何提高速度

提高网站速度的全部可行战术可分为五大类:最大化缓存、最小化查找、最小化每条请求的开销、最小化数据大小,以及优化浏览器的呈现。请注意,各分类描述极限行为的方式,例如 “最大化” 或 “最小化”,举例来说,不存在 “打开” 或者 “关闭” 一种特性或者设置的简单解决方案。下面我们来详解各分类,并说明其工作方式。

最大化缓存

浏览器能够在本地缓存文件,因此不必在每次载入页面时从服务器载入这些文件,而是可以使用本地副本。尽管这对于动态 Web 页面本身意义不大(例如博客页面),但对于已经载入页面的全部图像、CSS 文件和 JavaScript 文件来说又会如何呢?这些文件基本不会更改,即便更改,也是非常少的。不必每一次都去服务器中获取相同的 CSS 文件,特别是在为整个站点使用一个 CSS 文件时。用户载入的所有页面均使用相同的 CSS 文件,因此您完全可以使用本地缓存的副本,而不必使用服务器副本,因为它们是完全相同的。

浏览器实际上会接受服务器提供的缓存命令。服务器可以告知浏览器项目是否有效、在多长时间内保持有效。服务器可以将这些命令附加到每一个文件。因此,服务器调用告知浏览器缓存一个 JS 文件、一个 CSS 文件、一个 JPG 文件,但不缓存 HTML 文件或者 TXT 文件。此外,也可以告知浏览器 “CSS 和 JPG 文件在一年内不会过期”。浏览器将解释这些命令,因为服务器告诉它 “这里有一个 JPG 文件,它在一年之内不会发生更改,在此期间,如果我的服务器上的任何页面引用了这个文件,那么您就应该使用本地副本”。

最小化查找

在任意类型的文件从服务器发送至浏览器时,都存在在各文件上建立 HTTP 连接的相关开销。换句话说,需要为各文件在服务器与浏览器之间建立一个通信信道。在大多数常见网站中,有数十个文件需要传输,每次存在这样的开销时,服务器都要花费一定的时间来建立连接。因此,减少查找数量可以减少服务器用于建立连接的时间。

实现此目标的主要方法应该显而易见:减少一个网页上需要传输的文件数量。例如,如果您的一个页面中包含 10 幅图像,那么您就可能需要建立 10 个 HTTP 连接。但您可以将资源整合到数量更少的文件之中,从而减少连接数量,例如将所有 jQuery 插件置于一个文件之中,或者将一个页面中的所有小图像并为一个大的图像文件,随后使用 CSS,仅显示大图像中您需要显示的部分。

最小化每条请求的开销

载入各网页时,浏览器会将某些信息中继至服务器,包括 cookie 以及调用 POST 和 GET 的时间等内容。当然,这需要花费时间,因为每次载入页面时,都必须从客户端向服务器上传 cookie 信息。某些网站会在 cookie 中存储大量信息,需要上传的信息越多,所花费的时间就越长。

更为可取的设计是在 cookie 中存储尽可能少的信息(例如,仅存储用户 ID),并使用这样的信息作为关键字,查找您在数据库中存储的所有必要信息。这能显著缩短此类信息的上传时间。

最小化数据大小

传送 20Kb 的图像文件要比传送 200Kb 的图像文件更快。这个分类包含所有这些相关实践:例如,尽可能使用 GIF 而非 JPG、最大限度地缩小 JavaScript 文件的大小、尽可能发送缩略图图像而非整个图像。

优化浏览器呈现

这个分类是极有挑战性的。其中包含诸如使用优化的 CSS 选取器等实践,但您的站点往往已经完成了设计,而处理 CSS 文件的人员往往不是负责优化服务器性能的人员。此外,这个分类中的要素提供的收益往往并不明显。

理论介绍到此为止,下面让我们来下载并运行产品!无论如何,这种插件的目的在于插入您自己的 Apache 安装,使您不必 再担心提升速度的所有细节。

下载、安装和配置 mod_pagespeed

下载程序包(下面的 参考资料 部分中提供了一个链接),运行恰当的 Linux 命令来将其安装到您的系统之中。

将 mod_pagespeed 安装到 Linux 系统中后,它尚未与您的 Apache 安装相关联。下面我们来关联它。安装完成后,为了简化后面的工作,我建议您将 “pagespeed.conf” 文件从安装位置复制到 Apache 的 “conf” 目录中。同时将 “mod_pagespeed.so” 文件复制到 Apache 的 “modules” 目录中。最后,创建您希望存储缓存和模块将生成的文件的目录,我将其分别命名为 “cache” 和 “files”。

接下来,我们需要告知 Apache 使用 mod_pagespeed 模块,为此,我们需要编辑 http.conf 文件。请将以下代码行添加到该文件的末尾处:
清单 1. 修改 Apache 的 http.conf 文件

				
 Include "{your-path-to-this-file}/pagespeed.conf"

 

接下来,我们需要对 pagespeed.conf 略作修改,使其指向我们的文件和目录的正确目录:
清单 2. 修改 pagespeed.conf 文件

				
# at line 1 of the file
LoadModule pagespeed_module {your-path-to-this-file}/mod_pagespeed.so

# down at line 25-26 in the file
ModPagespeedFileCachePath "{your-'cache'-file-path-here}"
ModPagespeedGeneratedFilePrefix "{your-'files'-file-path-here}"

 

最后,启动您的 Apache 服务器。

测试您的 mod_pagespeed 安装

通过几项检查来确保您的 mod_pagespeed 安装工作正常。显然,首先要确保您的 Apache 能正常启动(如果无法正常启动,那么就表示您的 mod_pagespeed 安装/配置存在问题)。随后,检查 “cache” 文件夹,确认 mod_pagespeed 正确写入此处。

现在,访问您正在处理的站点的一个网页(这个网页中应该包含类似于 JS 和 CSS 文件等内容)。访问页面后,检查 “cache” 文件夹。您应在这里看到一些文件,它们应该是可收缩的文件(JS 和 CSS 文件)的 GZipped/压缩版本。这是表明您已正确安装和配置 mod_pagespeed 的第一项证明。

最后一项检查是您从服务器获得的响应标头 (response header)。您可以使用 Firebug 或 Google 自己的 Page Speed 等工具来进行这项检查,甚至可以编写 PHP 代码来查找此标头。在检查响应标头时,请查找对 “Modpagespeed” 的引用,因为 Google 的工具会标记此响应。

祝贺您!成功检查 “cache” 文件夹和响应标头之后,即可确信您已经正确安装和配置了 mod_pagespeed。

试用 mod_pagespeed

如果您希望在正式使用之前首先试用一下 mod_pagespeed,可以按照上述步骤进行操作,并在准备好激活之前关闭 pagespeed.conf 文件中的模块。(无需撤销 Apache http.conf 文件中的配置设置。)只需关闭和启动 pagespeed.conf 文件本身之中的 mod_pagespeed 即可;查找第 10 行中的 ModPagespeed on 参数。要使此项变更生效,您需要回退或重启 Apache。

结束语

大多数网站管理员都深知速度和页面加载时间的重要意义,但很少有网站管理员是监视统计信息和最大加载时间的专业 Linux 极客 (geek)。对于大多数网站管理员来说,像 mod_pagespeed 这样的简单工具正是他们的理想选择,这些工具易于安装,几乎无需配置,并且能够极大地为您用户改进页面加载时间。