开启Gzip压缩为博客加速

最近一直有博友跟我说我的博客速度很杯具。其实这我也知道。谁让咱是国外的空间呢,国内实在是太不给力了。。。这个我无法改变,所以只好从其他方面下手来提高博客的访问速度了。

百度一下,很快就找到了这方面的信息,其中一个便是GZip压缩。GZIP压缩其实就是将网页内容压缩,减少HTML代码网络传输的代价,来提高Web性能。它最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩。Linux中常用到后缀为。gz的文件,它们就是GZIP格式的。现今已经成为Internet上使用非常普遍的一种数据压缩格式,或者说一种文件格式。HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。网站开启Gzip压缩以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度。一般对纯文本内容可压缩到原大小的40%。当然这也会增加服务器的负载。

于是,我便开启了Gzip, 我的首页大约有80K,经压缩后变为20K,压缩率为:74.43%。压缩率实在是高啊,哈哈 :-D

下面就是我开启Gzip的检测结果:
2005-1

检测网站是否开启GZIP压缩的方法:http://tool.chinaz.com/Gzips/

综合百度谷歌的搜索结果,说明一下开启GZIP压缩的方法:

一、开启cPanel控制面板中的“优化网站”功能:

登陆cPanel面板,点击“软件”中的“优化网站”,然后选中“压缩所有内容”,最后点“更新设置”即可完成Gzip的开启。这个对于CSS,JS,以及HTML文件更具有极高的压缩率,尤其当博客使用了比较多的JS特效,开启GZip后压缩比高达75%。如果你的首页有100KB的话,开启GZip后就变成25KB了,加速效果非常明显。
2005-2

这个方法比较简单,如果在cPanel面板中找不到“优化网站”,那么你可以尝试下面的方法。

二、利用代码和插件实现加速:

首先检测你的空间是否支持gzip或deflate来压缩文件。

检测方法:新建一个phpinfo.php文件,将以下代码复制进去:

  1. <?php  
  2. phpinfo();  
  3. ?>  

将phpinfo.php文件上传到网站根目录,并访问phpinfo.php。

查看_SERVER["HTTP_ACCEPT_ENCODING"]这项是否有Gzipdeflatezlib,或是用Ctrl+F 查找这三个关键词,如有即支持,一般都会至少支持一个。

1、如果空间支持Gzip压缩文件:

GZippy插件法:直接利用GZippy插件能自动为WordPress开启GZip压缩功能的插件。方法简单:下载GZippy-安装GZippy插件-激活。
如果你不喜欢用插件,可以在wordpress根目录的.htaccess增加以下代码:

  1. php_value output_handler ob_gzhandler  

2、如果空间支持Zlib压缩文件,可用php.ini方法。这个方法比较简单,压缩率也较高,可达75%左右。

新建一个名为 php.ini 的文件,添加以下代码,保存后上传至网站根目录即可。

  1. output_buffering = Off  
  2. output_handler =  
  3. zlib.output_compression = On  

3、如果空间支持deflate模块压缩文件,可用.htaccess方法。
只需要在.htaccess 文件中加入以下代码可以压缩 HTML, PHP, JS, CSS, XML 后缀的文件。

  1. < ifmodule mod_deflate.c >  
  2. AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-httpd-php application/x-javascript  
  3. < /ifmodule >  

三、IIS6.0启用GZIP压缩的方法

  • 打开Internet信息服务(IIS)管理器,右击"网站"->"属性",选择"服务"。在"HTTP压缩"框中选中"压缩应用程序文件"和"压缩静态文件",按需要设置"临时目录"和"临时目录的最大限制";
  • 在Internet 信息服务(IIS)管理器,右击"Web服务扩展"->"增加一个新的Web服务扩展...",在"新建Web服务扩展"框中输入扩展名"HTTP Compression",添加"要求的文件"为C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中"设置扩展状态为允许";
  • 使用文本编辑器打开C:\Windows\System32 \inetsrv\MetaBase.xml(建议先备份),找到Location ="/LM/W3SVC/Filters/Compression/gzip",如果需要压缩动态文件,则将 HcDoDynamicCompression设置为"TRUE",并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为 "TRUE",并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css等; HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数字越小压缩率越低;
  • 编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开"开始"->"管理工具"->"服务",停止"IIS Admin Service"后,即可保存;
    最后,重新启动IIS。

    这里要提到的是:IIS6.0的压缩,会对HTML、CSS等静态文件进行优化。IIS6.0会将这些压缩好的文件放在一个缓存目录中,如果没有修改,IIS6.0将直接返回缓存目录中的文件。而不是对这些文件每次都压缩。

    四、通过HttpModules启用GZIP压缩(.NET 2.0)

    主要是.NET 2.0有两个类:GZipStream DeflateStream。Module的代码粘贴如下

    1. public sealed class CompressionModule : IHttpModule    
    2.   {    
    3.     void IHttpModule.Dispose()    
    4.     {    
    5.       // Nothing to dispose;     
    6.     }    
    7.     void IHttpModule.Init(HttpApplication context)    
    8.     {    
    9.       if (BlogSettings.Instance.EnableHttpCompression)    
    10.       {    
    11.         context.PreRequestHandlerExecute += new EventHandler(context_PostReleaseRequestState);    
    12.       }    
    13.     }    
    14.     private const string GZIP = "gzip";    
    15.     private const string DEFLATE = "deflate";    
    16.     void context_PostReleaseRequestState(object sender, EventArgs e)    
    17.     {    
    18.       HttpApplication app = (HttpApplication)sender;    
    19.       if (app.Context.CurrentHandler is System.Web.UI.Page && app.Request["HTTP_X_MICROSOFTAJAX"] == null)    
    20.       {    
    21.         if (IsEncodingAccepted(DEFLATE))    
    22.         {    
    23.           app.Response.Filter = new DeflateStream(app.Response.Filter, CompressionMode.Compress);    
    24.           SetEncoding(DEFLATE);    
    25.         }    
    26.         else if (IsEncodingAccepted(GZIP))    
    27.         {    
    28.           app.Response.Filter = new GZipStream(app.Response.Filter, CompressionMode.Compress);    
    29.           SetEncoding(GZIP);    
    30.         }    
    31.       }    
    32.             else if (app.Context.Request.Path.Contains("WebResource.axd"))    
    33.             {    
    34.                 app.Context.Response.Cache.SetExpires(DateTime.Now.AddDays(30));//是.NET自己的文件,这里只是加缓存时间    
    35.             }    
    36.     }    
    37.     private static bool IsEncodingAccepted(string encoding)    
    38.     {    
    39.       HttpContext context = HttpContext.Current;    
    40.       return context.Request.Headers["Accept-encoding"] != null && context.Request.Headers["Accept-encoding"].Contains(encoding);    
    41.     }       
    42.     private static void SetEncoding(string encoding)    
    43.     {    
    44.       HttpContext.Current.Response.AppendHeader("Content-encoding", encoding);    
    45.     }    
    46.   }    
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar
十年沉船,苍苔不生。
埃微I5plus
被禁忌的游戏评论: 我是否该写一篇悲伤的乐评
十年·肖申克的救赎影评

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:35   其中:访客  19   博主  16

    • avatar 海景婚纱摄影 5
      • avatar new air max shoes 0

        压缩是一门艺术,哈哈。

        • avatar Junan 6

          我是直接用WP插件~~

            • avatar 两天 Admin

              @Junan @Junan, 我的直接在主机后台打开就可以了,呵呵,方便~~

            • avatar 朽木 0

              这个很有用,MARK下 哈哈

              • avatar AirMax 1

                步骤还蛮复杂的啊,不过很有用呢

                • avatar 油罐车 1

                  恩 我又来来了勒 呵呵

                  • avatar skidu 5

                    没发现太大的改变- –
                    你这母鸡是哪里的? :evil:

                      • avatar 两天 Admin

                        @skidu @skidu, 感觉不是很大,啥母鸡?? :idea:

                          • avatar skidu 5

                            @两天 @两天, 这次打开。。有缓存的情况下。。都超过15秒了。。不知道是我这里卡还是你的空间的原因。。我感觉还是你网站上加载的“不相干内容”太多的原因。。。
                            母机- –

                            • avatar skidu 5

                              @两天 @两天, 大致看了下,一个天气预报。。八九个广告(汗。。)。。一个clicki。。一个微博调用。。再加上一些插件什么的以及诸多js。。 – –

                          • avatar 朵未 6

                            这个必须的,我早搞了。把js css也压缩了。

                            • avatar 扯远了 5

                              我好久没搞博客了 最近似乎对网路没什么兴趣了

                              • avatar lulu 4

                                丫丫。。。看样子很不错哦、、、

                                • avatar 雨阳美眉 4

                                  有用,我回家看看去。
                                  我的必须要压缩一下了。

                                  • avatar 竹下无为梦 4

                                    我开启了。

                                    • avatar 七七 4

                                      呵呵,挺实用,效果不错,顶一个!

                                      • avatar 学夫子 4

                                        这个很有用,基本上可以压缩百分之七十

                                        • avatar 爱惜 3

                                          我用代码开启滴。但感觉不了有多快。

                                          • avatar 小星 3

                                            我直接拿插件开启的~

                                              • avatar 两天 Admin

                                                @小星 @小星, 呵呵,俺是用的cPanel面板直接开启的~~