查看: 8832|回复: 0

利用 .htaccess 启用 gzip 压缩静态内容

[复制链接]
  • TA的每日心情
    开心
    2015-9-8 13:06
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2012-6-9 08:38:31 | 显示全部楼层 |阅读模式

    [tr][td]

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

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

    介绍

    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
    结果

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



    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-12-26 23:20 , Processed in 0.024098 second(s), 12 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部