本文主要介绍如何通过配置Apache对页面进行压缩从而节省网站的带宽以及提升用户的访问速度。与PHP中
ob_start("ob_gzhandler")功能一样!
网站的访问速度是由多个因素所共同决定的,这些因素例如应用程序的响应速度、网络带宽、服务器性能、与客户端之间的网络传输速度等等。其中最重要的一个因素是应用程序本身的响应速度,因此当你为网站性能所苦恼时,你第一个需要着手进行处理的便是尽可能的提升应用程序的执行速度,你可以使用缓存或者是优化代码的执行效率来提升应用程序的速度。
但是,本文并不是介绍如何来提升应用程序的执行效率,前面提到的只不过是为了防止您病急乱投医。在确保您的应用程序的性能已经达到足够好,同时服务器的性能也完全满足的情况下,不妨来试试网页压缩来进一步提升网页的浏览速度,而且非常重要的是,它完全不需要任何的成本,只不过是会让您的服务器CPU占用率稍微提升一两个百分点而已或者更少。
网页压缩是一项由 WEB 服务器和浏览器之间共同遵守的协议,也就是说 WEB 服务器和浏览器都必须支持该技术,所幸的是现在流行的浏览器都是支持的,包括 IE、FireFox、Opera 等;服务器有 Apache 和 IIS 等。双方的协商过程如下:
1、首先浏览器请求某个 URL 地址,并在请求的头 (head) 中设置属性 accept-encoding 值为 gzip, deflate,表明浏览器支持 gzip 和 deflate 这两种压缩方式(事实上 deflate 也是使用 gzip 压缩协议,下面我们会介绍二者之间的区别);
2、WEB 服务器接收到请求后判断浏览器是否支持压缩,如果支持就传送压缩后的响应内容,否则传送不经过压缩的内容;
3、浏览器获取响应内容后,判断内容是否被压缩,如果是则解压缩,然后显示响应页面的内容。
在实际的应用中我们发现压缩的比率往往在 3 到 10 倍,也就是本来 50k 大小的页面,采用压缩后实际传输的内容大小只有 5 至 15k 大小,这可以大大节省服务器的网络带宽,同时如果应用程序的响应足够快时,网站的速度瓶颈就转到了网络的传输速度上,因此内容压缩后就可以大大的提升页面的浏览速度。
接下来我们介绍几种常用的环境下如何启用网页压缩功能。
配置方法
纯 Tomcat 服务器
如果您的 WEB 应用程序是跑在 Tomcat 服务器下的,而且直接使用 Tomcat 所提供的 HTTP 服务,那建议你马上动手,因为实在是太简单了,你只需要在 server.xml 配置文件中给 HTTP Connector 增加一个 compression 的参数值为 on 并重启 Tomcat 服务器就立刻生效,配置如下:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" compression="on"/>
Tomcat 采用的是 HTTP/1.1 的 GZIP 压缩协议,它会根据浏览器送过来的请求中的 accept-encoding 值是否包含 gzip 来判断浏览器是否支持 gzip 压缩协议,如果浏览器支持就启用 gzip 压缩,否则就不进行任何压缩处理。Tomcat 中还有另外一个参数 compressableMimeType,这个参数可以用来指定压缩哪种类型的内容,例如可以指定该配置值为:text/html,text/plain ,则只压缩 contentType 为 text/html 和 text/plain 的页面,不过您最好也将 css 和 javascript 文件也算在压缩的文件类型中,因为这两者的压缩效果也十分的明显。
Apache 服务器
在 apache 1.3 版本,大家常用 mod_gzip 对输出内容进行压缩,现在主流的浏览器都支持 gzip 解压缩。在 apache2 下,这个模块换名为 mod_deflate,对应的模块文件名是 mod_deflate.so。mod_gzip 本文不做介绍,下面描述一下在 Apache 2 下如何启用并配置 mod_deflate 模块。默认安装的 Apache 不管是 Windows 还是 Linux/Unix,都是不启用该模块的, Linux/Unix 下甚至不带该模块,你需要手工编译这个模块。
下面我们分别介绍在 Windows 和 Linux 操作系统下如何启用并配置 mod_deflate 模块。
在 Windows 下采用安装程序安装的 Apache 服务器已经带有 deflate 所需要的模块 mod_deflate.so 和 mod_headers.so,我们只需要在 httpd.conf 配置文件中启用并进行相关的配置即可,配置如下:
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
<Location />
# Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>
而如果是 Linux/Unix 操作系统,如果你没有在编译安装的过程中将所需要的两个模块 mod_deflate 和 mod_headers 编译进去的话,那就稍微有点麻烦,首先我们先看如何在编译安装 Apache 过程中也同时编译这两个模块,请在执行 configure 程序时增加两个参数分别是:
# ./configure --enable-deflate --enable-headers
这样在编译完 Apache 后就可以直接在 httpd.conf 中启用并配置 deflate 模块了,配置的方法跟 Windows 平台下是相同的。
如果说您的 Apache 已经在运行了,不想再重新编译一次,那也可以选择只编译 deflate 模块所需的文件 mod_deflate.c 和 mod_headers.c。这两个文件位于 {apache-src}/modules/filters/ 目录下(其中 {apache-src} 为 apache 源文件所在的目录)。使用如下命令来单独编译这两个源文件。
# {apache-bin}/apxs -i -a -c {apache-src}/modules/filters/mod_deflate.c
# {apache-bin}/apxs –i –a –c {apache-src}/modules/filters/mod_headers.c
其中 {apache-bin} 为 Apache 安装目录下的 bin 目录,接下来在 httpd.conf 直接配置该模块即可。
很多时候你在单独编译 deflate 模块的时候可能会碰到编译错误,提示是:
Cannot load /opt/apache/modules/mod_deflate.so into server: /opt/apache/modules/mod_deflate.so: undefined symbol: deflate
解决的方法如下:
编辑 /usr/local/apache2/bin/apr-config 文件修改其中的 LDFLAGS 值为 "-lz",然后再重新编译 mod_deflate 模块,apxs -ica mod_deflate.c 即可。
为了省却不必要的麻烦,请尽量在编译安装时直接加上 --enable-deflate --enable-headers 参数。
请看看我做的效果对比:
Request Headers:
Host localhost
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2
Accept text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Cookie lastvisit=17%091170301156%09%2Ftest%2Fphpwindblog%2Fupload%2Flogin.php%3F
Cache-Control max-age=0
Response Headers:
压缩前: 1 request 9 KB (0 b from cache) 31ms
Date Tue, 13 Mar 2007 07:19:33 GMT
Server Apache/2.0.55 (Win32) PHP/5.2.0 mod_python/3.2.8 Python/2.4.3 DAV/2
X-Powered-By PHP/5.2.0
Keep-Alive timeout=15, max=100
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/html
压缩后:1 request 2 KB (0 b from cache) 31ms
Date Tue, 13 Mar 2007 06:52:44 GMT
Server Apache/2.0.55 (Win32) PHP/5.2.0 mod_python/3.2.8 Python/2.4.3 DAV/2
X-Powered-By PHP/5.2.0
Vary Accept-Encoding,User-Agent
Content-Encoding gzip
Content-Length 1289
Keep-Alive timeout=15, max=99
Connection Keep-Alive
Content-Type text/html
由上面的对比可以看出,原先大小为9KB的文件,经过压缩后,大小仅为2KB。
结论
以上是目前比较流行的两个 WEB 服务器软件以及 Tomcat 服务器对于页面压缩的配置方法;其他的一些 J2EE 应用服务器如果不支持这个功能的话可以考虑利用过滤器(Servlet Filter)来进行处理,具体的代码以及配置方法可以参考 Resin 服务器所提供的文档。但是有一点需要提醒各位读者的是,本文介绍的访问只是在服务器本身的响应速度已经足够优化的情况下进行,也就是说在带宽成为系统瓶颈的时候才来考虑该方案。
分享到:
相关推荐
【网页压缩技术】是提升网站浏览速度的有效方法,尤其在应用程序性能优化和服务器性能充足的情况下。这项技术基于WEB服务器和浏览器间的协议,确保两者都支持压缩格式,如gzip和deflate。当浏览器发送请求时,它会在...
在本文中,我们将详细介绍如何在 CentOS 上配置 Apache,以便实现网页服务器的功能。 一、 Apache 的安装和设置 在 CentOS 上安装 Apache 非常简单,只需要使用 yum 安装 httpd 软件包即可。使用以下命令安装 ...
在 Apache 中,Gzip 压缩的配置主要是通过 deflate_module 模块来实现的。下面是 Gzip 压缩的配置详解: * SetOutputFilter DEFLATE:这是一个开关,告诉 Apache 对传输到浏览器的内容进行压缩。 * SetEnvIfNoCase ...
apache提供的压缩及解压工具类,比jdk自带的方式速度要快。
实验六 APACHE 服务器配置 1、实验目的要求 (1)掌握 APACHE 服务器的安装 (2)使用 APACHE 服务器的配置 2、实验主要内容 (1)APACHE 服务器的安装与启动 (2)简单 APACHE 服务器基本配置 (3)配置个人 WEB ...
apache基本的配置的配置文件配置方法
- Gzip压缩:启用`mod_deflate`模块以减小响应内容的大小,提高页面加载速度。 - 负载均衡:结合`mod_proxy`模块实现多台服务器间的负载分发。 通过以上学习,你将能够熟练地搭建和管理Apache服务器,为你的网站...
windows下配置Apache双向认证和反向代理(Apache+配置文档)
CentOS系统中安装配置Apache+...这些错误可以通过检查配置文件、环境变量和权限等来解决。 总结 本文档提供了在CentOS系统中安装配置Apache、PHP和MySQL环境的详细步骤和配置参数,旨在帮助用户快速搭建Web开发环境。
其中,通过使用Gzip压缩技术来减小JavaScript文件的大小,能够显著提升网站的加载速度,从而改善用户体验。Gzip是一种广泛使用的数据压缩算法,尤其适用于HTTP传输,因为它可以有效减少网络带宽的消耗。 **Gzip压缩...
Apache配置手册是Web服务器管理员和开发者的重要参考资料,它详尽地介绍了如何安装、配置和管理...通过深入学习和实践这份Apache配置手册,你可以掌握Web服务器的日常管理和高级配置技巧,提升网站的稳定性和效率。
Ubuntu 下配置 Apache 虚拟主机 在本文中,我们将详细介绍在 Ubuntu 操作系统中配置 Apache 虚拟主机的过程。虚拟主机是指在一台物理服务器上运行多个独立的虚拟服务器,每个虚拟服务器可以有自己的域名、IP 地址和...
本实验主要关注如何通过配置Apache来禁止目录列出,防止用户能够浏览到服务器上的文件目录结构。 **一、实验目的** 1. **熟悉Apache配置文件的位置**:了解Apache的配置文件在哪,以及如何编辑这些文件是管理Web...
Apache 配置负载均衡实现访问请求分流提高访问性能 Apache 配置负载均衡是将所有用户的访问压力分散到多台服务器上,也可以分散到多个 Tomcat 里,提高访问性能。负载均衡的主要目标是将用户的访问请求分流到多个...
"Apache配置中文版"提供了详细的指导,帮助用户理解和设置Apache服务器,使其能根据需求运行网站和服务。下面将深入探讨Apache配置的相关知识点。 1. **Apache基本结构与配置文件**: Apache的配置主要通过修改`...
Linux 下安装 Apache 及反向代理配置完整过程 Linux 操作系统下安装 Apache 服务器是一件复杂的任务,需要逐步完成多个步骤。本文将详细介绍 Linux 下安装 Apache 及反向代理配置的完整过程。 安装 Apache 安装 ...
window下ipv6 配置,以便apache的ab压力测试工具可以进行测试!window下ipv6 配置,以便apache的ab压力测试工具可以进行测试!
通过合理配置Nginx和Apache,不仅可以显著提升网站的性能和安全性,还能实现灵活的负载均衡,为用户提供更稳定、快速的服务体验。然而,配置过程需要根据具体需求进行细致调整,确保每个环节都能发挥最优效能。希望...
可以通过调整 Apache 的配置文件、优化 MySql 的配置、使用缓存等方法来提高性能。 本篇文章详细介绍了在 Linux 操作系统下安装和配置 Apache2.2.x、MySql5.x 和 PHP5.x 的步骤,希望能够帮助读者快速安装和配置 ...
虚拟机中安装和配置Apache服务器 在虚拟机中安装和配置Apache服务器是 Linux 服务器管理员的基本技能之一。本文将详细介绍在 Linux 上安装和配置 Apache 服务器的步骤,并提供了详细的配置指导。 一、安装Apache...