文档章节

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

迷途d书童
 迷途d书童
发布于 2012/05/29 12:07
字数 746
阅读 2345
收藏 42
点赞 0
评论 16

为了优化网站的访问速度,我们可以通过对静态内容进行压缩,从而减少网页加载的时间,大大节省用户的带宽。在这篇文章中,我将介绍如何使用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
Nginx Gzip模块启用和配置指令详解

参考一 http://www.111cn.net/sys/nginx/69492.htm 参考二 查找nginx安装的路径以及相关安装操作命令 参考三 http://blog.csdn.net/u011078940/article/details/51276765 Nginx的gzip模块是内...

james_laughing
2016/12/23
8
0
WordPress加速缓存插件WP Super cache安装方法及使用技巧

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

mickelfeng
2013/09/12
0
0
雅虎优化网站加载速度的34条法则

雅虎给出了优化网站加载速度的34条法则(包括Yslow规则22条)详细说明,下载转发ponytail的译文(来自帕兰映像)。下面分享给大家。   1.Minimize HTTP Requests减少HTTP请求   图片、css、s...

刘赤龙
2010/06/08
0
0
简单一步开启你的wordpress Gzip压缩,提高网页浏览速度

大家都知道Gzip功能是一种让网页进行压缩,从而达到提交打开及浏览网页的速度,目前主流的浏览器都支持这个功能。开启Gzip是需要服务器支持的。首先我们可以先用Gzip检查工具检查一下自己的网...

Wone
2012/03/14
0
0
apache 开启Gzip网页压缩

网页gzip压缩是个什么概念呢?如果你还没接触到,讲文字全是废话,先来看两张图看着实在; 网页压缩前: 网页压缩后: 从图中就可看出网页压缩后这加载时间是成倍的缩减,下面就是就是要讲解...

白俊遥
2016/03/06
5
0
利用压缩网页来提升网站浏览速度

本文主要介绍如何通过对页面进行压缩从而节省网站的带宽以及提升用户的访问速度。 网站的访问速度是由多个因素所共同决定的,这些因素例如应用程序的响应速度、网络带宽、服务器性能、与客户...

红薯
2008/10/05
402
0
WordPress 开启 Gzip 为网页加载提速减少响应时间

大家都晓得,开启Gzip能极大地压缩文本数据的体积。对于使用 WordPress 的博主来说,开启服务器的GZip压缩是一个为博客加速的好方法。GZip可对多种类型的文 件进行压缩,对于 CSS,JS,以及H...

天外飘雪
2012/10/26
0
0
修改Apache配置文件开启gzip压缩传输

最近无事研究一些Web的优化,用工具page speed检测网站时发现还没有开启gzip压缩,于是上网找来资料实验一下;在apache2.0以上(包括apache2.0)的版中gzip压缩使用的是mod_deflate模块,下面...

程序员Jack
2013/02/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6用的外库遇到的问题

要用到wmi库 pip install wmi 装后不能用还要安装pywin32库。 要用到crypto加密模块安装pip instal pycrypto装后不能用。要安装pycryptodome。...

oisan_
14分钟前
0
0
select, poll, epoll I/O复用介绍

什么是I/O复用? 内核监视多个文件描述符(I/O文件句柄),一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知应用程序进行相应的读写操作。 I/O多路复用又被称为“事件驱动”(比如读写事...

xiaoxlm
15分钟前
0
0
【Spring 系列 给IOC容器添加组件的几种方式总结】

给Spring 注册Bean的几种方式总结。其中使用@Import注解是Spring Boot 完成自动配置的一个核心注解。 1、Spring 中给IOC容器添加组件的几种方式 在Spring的配置文件中,配置Bean(基于XML方式...

HansonReal
16分钟前
4
0
bootstrapTable语言包设置

###方法一引入不同的语言包 <script src="bootstrap-table-zh-CN.js"></script> ###方法二引入全语言包 <script src="bootstrap-table-locale-all.min.js"></script>//然后在初始化前设计默......

momo1987
16分钟前
0
0
Saltstack 常用命令

1、拷贝文件到客户端 # salt 'slaver.test.com' cp.get_file salt://apache.sls /tmp/cp.txt 2、拷贝目录到客户端 # salt 'slaver.test.com' cp.get_dir salt://test /tmp 3、显示存活的客户......

硅谷课堂
17分钟前
0
0
致初学者-如何学好Python这门编程语言?[图]

致初学者-如何学好Python这门编程语言?[图]: 对于很多Python3初学者,往往会面临以下问题:Python2和Python3我该学习哪一个?是否要安装Linux系统学习Python?Python3有各种版本我该安装哪...

原创小博客
20分钟前
1
0
E31---setopt=protected_multilib=false

今天在云服务器上装nginx,需要先安装一些依赖库比如zlib, ,但是安装zlib时候报错。 yum install -y zlib zlib-devel 1 (-y 指的是如果需要选yes no的自动y)下面是报错 Protected multil...

侠客行之石头
24分钟前
0
0
HTTP常见面试题

Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ,而 HTTPS 的标准端口是443 在OSI 网络模型中,H...

JK_OPERA
26分钟前
0
0
python爬取站长素材网页图片保存到ppt中

网站地址:http://sc.chinaz.com/tupian/index.html 直接上代码: import requestsfrom bs4 import BeautifulSoupfrom pptx import Presentationfrom pptx.util import Inchesimpor......

你为什么不吃药
27分钟前
1
0
Ubuntu 18.04 swap空间的修改

一、准备工作 执行“sudo swapon -s”命令,查看是否已经存在swap file 二、修改swap file # 如果第一步存在swapfile则需要先禁用sudo swapoff /swapfile# 修改swap 空间的大小为2Gs...

Iceberg_XTY
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部