Rob*_*t K 6 javascript php compression
我已经看过一些关于gzipping javascript以节省下载时间的参考资料. 但我也看到一些警告,某些浏览器不支持这一点.
我可以使用两种不同的方法:
mod_deflate通过htaccess使Apache压缩给定目录中的JS/CSS文件ob_start('gzhandler')压缩文件并使用正确的标头将其返回到浏览器.方法1的问题在于并非所有浏览器都支持mod_deflate,而且我不知道如何将.htaccess文件写入足够智能以便为此进行调整.
方法2的问题在于没有关于如何判断浏览器是否支持gzip压缩脚本或样式表的确定答案,并且如果它确实必须将mime-type作为标题中的内容类型给出.
我需要一些建议.首先,浏览器更普遍接受哪种方法?其次,如何使用任一方法衰减来提供未压缩的备份脚本?第三,单独<script src="js/lib.js.gz" type="text/javascript"></script>工作?(显然不会腐烂.)
为了记录,我使用PHP5与mod_deflate和完整的gzip创建功能,我的doctype是xhtml strict.此外,javascript本身是用YUI压缩的. 编辑: 我回去看了看,但我只有Apache 1.3; 我以为我有2,所以很抱歉在我可能没有它时提及mod_deflate.
Owe*_*wen 10
mod_deflate和php的gzhandler都基于zlib,所以从这个意义上说,浏览器如何压缩内容几乎没有什么区别.
为了回应您的第一个问题,您可以设置模块特定的.htaccess信息,如下所示:
<IfModule mod_deflate.c>
# stuff
</IfModule>
Run Code Online (Sandbox Code Playgroud)
为了回应您的第二个问题,您可以检测PHP中的浏览器支持:
if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') ) {
ob_start('ob_gzhandler');
header("Content-Encoding: gzip");
// etc...
}
Run Code Online (Sandbox Code Playgroud)
这里有一些未经测试的.htaccess应该能够处理压缩与未压缩.js文件的协商:( 源码)
<FilesMatch "\\.js.gz$">
ForceType text/javascript
Header set Content-Encoding: gzip
</FilesMatch>
<FilesMatch "\\.js$">
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule (.*)\.js$ $1\.js.gz [L]
ForceType text/javascript
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10163 次 |
| 最近记录: |