我找到了几个关于如何启用gzip的教程,但似乎没有什么对我有用,所以我的问题是如何启用gzip。我在一个共享的Dreamhost托管服务器上,它正在运行PHP版本5.2和Apache,从我发现这行的php信息,也许这可能有帮助吗?
zlib
ZLib Support enabled
Stream Wrapper support compress.zlib://
Stream Filter support zlib.inflate, zlib.deflate
Compiled Version 1.2.3.3
Linked Version 1.2.3.3
Directive Local Value Master Value
zlib.output_compression Off Off
zlib.output_compression_level -1 -1
zlib.output_handler no value no value
我也找到了这一行
_SERVER["HTTP_ACCEPT_ENCODING"] gzip, deflate
我不知道这与它有什么关系。但这是我的第一个问题,其次,我有dropbox,托管一个javscript文件,我想知道是否有可能将该文件gzipped,它没有被转移压缩,所以有没有办法这样做?
答案 0 :(得分:50)
您是否尝试过使用ob_gzhandler?
<?php
ob_start("ob_gzhandler");
?>
<html>
<body>
<p>This should be a compressed page.</p>
</html>
<body>
提示:有时检测网络是否发送压缩是非常棘手的,我使用firefox的firebug插件,我测试了一个没有压缩和压缩的php文件并比较了大小,在我的情况下,差异是1mb(非压缩)和56kb压缩。
或者在.htaccess中
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
</IfModule>
答案 1 :(得分:6)
在Dreamhost的官方维基中,他们通过modifying an htaccess启用此功能:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl|jpg|png|gif)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
这基本上会检查是否找到了mod_czip.c,如果是,它会为你压缩文件,以便更快地发送到浏览器。这可能会加快下载时间35-40%,然后文件大小应该降低到55-65%。
通过在Google上快速搜索,您可以在thread on Stackoverflow网站上找到解决此问题的其他third party个。
答案 2 :(得分:5)
在Apache中,启用输出压缩非常简单。将以下内容添加到.htaccess文件中:
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>
来源:http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/
答案 3 :(得分:5)
我需要做的就是在Apache级别启用编码
zlib.output_compression = 1 // the PHP.ini file
这将使服务器执行必要的请求标头检查,压缩,发送相关标头
您也可以在ob_start()
ini_set("zlib.output_compression", 1);
要使Apache压缩静态资源(例如:.js文件,.css文件),请按照Kamlesh的回答进行操作
答案 4 :(得分:3)
##首先,您必须在WHM(服务器)设置中进行更改才能启用Gzip。之后,在cPanel设置##
中进行更改
对于WHM设置=&gt; Easy Apache =&gt;穷举选项列表&lt;这里启用 - deflate 标签&gt;
- 醇>
对于cPanel设置=&gt;软件/服务=&gt;优化网站&lt;在这里选择你想要的选项&gt;
答案 5 :(得分:1)
压缩可以通过两种方式完成。
Apache实际上有两种压缩选项:
- mod_deflate 更容易设置并且是标准的。
- mod_gzip 似乎更强大:您可以预压缩内容。
Deflate快速且有效,所以我使用它;如果漂浮你的船,使用mod_gzip。在任何一种情况下,Apache都会检查浏览器是否发送了“Accept-encoding”标头并返回该文件的压缩版或常规版。但是,一些较旧的浏览器可能会遇到问题(更多信息如下),并且您可以添加特殊指令来纠正此问题。
如果您无法更改.htaccess文件,则可以使用PHP返回压缩内容。为您的HTML文件添加.php扩展名,并将此代码添加到顶部:
在PHP中:
<?php if (substr_count($_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’)) ob_start(“ob_gzhandler”); else ob_start(); ?>
我们检查“Accept-encoding”标头并返回该文件的gzip压缩版本(否则为常规版本)。这几乎就像建立自己的网络服务器(有趣!)。但实际上,如果可以帮助它,请尝试使用Apache压缩输出。你不想愚弄你的文件。
参考:http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/