文档章节

利用 .HTACCESS 启用 GZIP 压缩静态内容

迷途d书童
 迷途d书童
发布于 2012/05/29 12:07
字数 746
阅读 2353
收藏 42

为了优化网站的访问速度,我们可以通过对静态内容进行压缩,从而减少网页加载的时间,大大节省用户的带宽。在这篇文章中,我将介绍如何使用Apache和.htaccess文件进行静态内容压缩。

首先让我介绍一下,我们可以使用两种不同的方法压缩内容:GZipdeflate

介绍

GZip方法在早期的apache版本中使用(在Apache 1.3之前)。但在那之后apache引入了deflate方法,相比GZip并没有太大的效果(但仍是非常好的)。然而,GZip在apache 1.3之后不再提供更多的支持。因此,你的Apache版本必须大于1.3,如果没有,你必须升级到最新版本的Apache。

在使用压缩之前,你必须启用apache的mod_deflate模块。要启用这个模块,你只需要从httpd.conf文件去掉这个模块行。

启用这个模块后,你的服务器准备好提供压缩的内容。但是,服务器只有当它接收到来自客户端的相应头文件时,才会创建压缩内容。所以,现在你需要将下面的代码放置到你网站的htaccess文件,才能通知服务器提供压缩的内容。

.HTACCESS代码

<ifmodule mod_deflate.c="">
  # force deflate for mangled headers
  # developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
  <ifmodule mod_setenvif.c="">
    <ifmodule mod_headers.c="">
      SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
      RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
    </ifmodule>
  </ifmodule>

  # HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
  <ifmodule filter_module="">
    FilterDeclare   COMPRESS
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/html
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/css
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/plain
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/x-component
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/javascript
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/json
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xhtml+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/rss+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/atom+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/vnd.ms-fontobject
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $image/svg+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/x-font-ttf
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $font/opentype
    FilterChain     COMPRESS
    FilterProtocol  COMPRESS  DEFLATE change=yes;byteranges=no
  </ifmodule>

  <ifmodule !mod_filter.c="">
    # Legacy versions of Apache
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
    AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml 
	AddOutputFilterByType DEFLATE application/atom+xml
    AddOutputFilterByType DEFLATE image/svg+xml application/vnd.ms-fontobject 
	AddOutputFilterByType DEFLATE application/x-font-ttf font/opentype
  </ifmodule>
</ifmodule>

将上面的代码放置在你的htaccess文件之后,看看你网站的请求头部。你可以看到一个额外的头“Accept-Encoding“。这意味着请求的客户端能够处理给定的压缩类型的内容,并将提供压缩内容。

Accept-Encoding:gzip,deflate,sdch

结果

看看下面的图片,有多少被压缩了。

从上面的图片可以看出,实际页面大小707KB,使用压缩后是401KB。因此,它最终会提高你的网站的性能。

结论

我强烈建议你把网站静态内容做压缩处理,因为没有理由不这么做,这是Web开发的一个最佳实践。


原文链接OSChina.NET翻译

© 著作权归作者所有

共有 人打赏支持
迷途d书童

迷途d书童

粉丝 1021
博文 144
码字总数 14138
作品 0
深圳
高级程序员
私信 提问
加载中

评论(16)

WoodBunny
WoodBunny
Mark一下 太好了
Raynor1
Raynor1
这个这个这个这个……为什么要用APACHE.。直接NGINX里面的GZIP要比APACHE会快很多。
迷途d书童
迷途d书童

引用来自“lzzy.ha”的评论

楼主翻译有一个问题,“你只需要从httpd.conf文件去掉这个模块行。”应该为:“去掉该行的注释”

呵呵,多谢指正。
RickyFeng
RickyFeng
magento的.htaccess有例子,又简单又方便
l
lzzy.ha
楼主翻译有一个问题,“你只需要从httpd.conf文件去掉这个模块行。”应该为:“去掉该行的注释”
Tity
Tity
过来学习一下 。
我的网站很慢希望这个方法有效果 。
狂飙的小蜗牛
狂飙的小蜗牛
可以直接发送GZIP内容,这样就不会额外消耗CPU了
Onedot
Onedot
实际应用的时候除了CPU因素外,还有GZIP自身的缓存区需要考虑
如果只是压缩CSS,JS无所谓,如果有大量生成的HTML时就需要考虑了

LinkerLin
LinkerLin
还是用Nginx吧
孙彦欣
孙彦欣
我问下 为何 我配置后 引用的css和js不被压缩呢 注意是引用的
Web服务器处理HTTP压缩之gzip、deflate压缩

一、什么是gzip gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分; Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台。当应用Gzip压缩到一个纯文本文件时...

rasine的杂货铺
2014/11/13
0
0
21 个非常有用的 .htaccess 提示和技巧

Apache Web 服务器可以通过 .htaccess 文件来操作各种信息,这是一个目录级配置文件的默认名称,允许去中央化的 Web 服务器配置管理。可用来重写服务器的全局配置。该文件的目的就是为了允许...

红薯
2012/06/20
16.9K
34
WordPress加速缓存插件WP Super cache安装方法及使用技巧

当Wordpress博客的访问量逐渐升高时,如何加快Wordpress运行效率,减少服务器压力,提高Wordpress的访问速度,就成为了日益紧迫的事情了。话说Wordpress臃肿低效率的毛病在网上被好多人所诟病...

mickelfeng
2013/09/12
0
0
WordPress速度 - 如何使您的WordPress网站加载速度快

WordPress速度 - 如何使您的WordPress网站加载速度快 快速加载网站对于获取和保持稳定的流量非常重要。因此,对于想要发展WP网站,增加流量和增加收入的每个人来说,WordPress的速度都是一个...

优惠券发放
10/21
0
0
在IIS上启用Gzip压缩(HTTP压缩)

一.摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言. 本文的知识点是从互联网收集整理, 主要来源于中文wiki. 使用YSlow检...

少年不搬砖老大徒伤悲
08/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Windows 环境下安装 Oracle JDK

本页面中描述了如何在 Window 环境下安装 Oracle JDK。 我们使用的版本是 Window 10,我们需要安装的版本是 Oracle JDK 8u191。 检查当前版本 在进行新的 JDK 安装之前,你需要检查下你本地的...

honeymose
20分钟前
0
0
用any-loader封装jQuery的XHR —— 随便写着玩系列

哎,都说没人用JQuery啦,叫你别写这个。 其实我也是好高骛远使用过npm上某个和某个很出名的XHR库,嗯,认识我的人都知道我喜欢喷JQ,以前天天喷,见面第一句,你还用JQ,赶紧丢了吧。但我也...

曾建凯
今天
4
0
聊聊storm的AggregateProcessor的execute及finishBatch方法

序 本文主要研究一下storm的AggregateProcessor的execute及finishBatch方法 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout......

go4it
今天
3
0
大数据教程(7.5)hadoop中内置rpc框架的使用教程

博主上一篇博客分享了hadoop客户端java API的使用,本章节带领小伙伴们一起来体验下hadoop的内置rpc框架。首先,由于hadoop的内置rpc框架的设计目的是为了内部的组件提供rpc访问的功能,并不...

em_aaron
今天
5
0
CentOS7+git+github创建Python开发环境

1.准备CentOS7 (1)下载VMware Workstation https://pan.baidu.com/s/1miFU8mk (2)下载CentOS7镜像 https://mirrors.aliyun.com/centos/ (3)安装CentOS7系统 http://blog.51cto.com/fengyuns......

枫叶云
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部