[英]How to enable gzip?
我找到了一些关于如何启用 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
我不知道这是否与它有关。 但这是我的第一个问题,其次,我有保管箱,托管一个 javscript 文件,我想知道是否可以将该文件 gzip 压缩,它没有被压缩传输,所以有什么办法吗?
你试过ob_gzhandler吗?
<?php ob_start("ob_gzhandler"); ?>
<html>
<body>
<p>This should be a compressed page.</p>
</html>
<body>
作为替代方案,使用 Apache Web 服务器,您可以将DEFLATE 输出过滤器添加到顶级服务器配置或.htaccess
文件中:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml \
text/css application/x-javascript application/javascript
</IfModule>
提示:有时检测 Web 服务器是否正在发送压缩内容非常棘手。 这个在线工具可以帮助解决这个问题。
在我的 Web 浏览器中使用开发人员工具,我测试了一个压缩和不压缩的 PHP 文件以比较大小。 就我而言,差异是 1 MB(未压缩)和 56 KB 压缩。
为了在 Apache 级别启用编码,我所要做的就是
zlib.output_compression = 1 // the PHP.ini file
这将使服务器进行必要的请求标头检查、压缩、发送相关标头
您也可以在ob_start()
之前的 PHP 文件中执行此操作
ini_set("zlib.output_compression", 1);
并让 Apache 压缩静态资源(例如:.js 文件、.css 文件),就像Kamlesh在他的回答中所做的那样
在 Dreamhost 的官方 wiki 中,他们通过修改 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 上快速搜索,您可以在 Stackoverflow 上找到另一个线程,并在第三方站点中解决此问题。
在 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/
## 首先,您必须更改 WHM(服务器)设置以启用 Gzip。 之后更改 cPanel 设置##
对于 WHM 设置 => Easy Apache => 详尽的选项列表 < 这里启用 -放气标签 >
对于 cPanel 设置 => 软件/服务 => 优化网站 < 在这里选择你想要的选项 >
压缩可以通过两种方式完成。
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”标头并返回文件的压缩版本(否则为常规版本)。 这几乎就像构建自己的网络服务器(多么有趣!)。 但实际上,如果您能提供帮助,请尝试使用 Apache 来压缩您的输出。 您不想胡乱处理您的文件。
参考: http ://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.