如何在PHP中使用gzip作为css / js文件?

时间:2009-06-05 13:32:36

标签: php gzip

现在我没有使用任何压缩方法,只需将下面放在body标签之间:

<link rel="stylesheet" type="text/css" href="Client/Css/all.css" />

是否可以在PHP中使用ob_start(“ob_gzhandler”)来压缩此css文件?

怎么样?

5 个答案:

答案 0 :(得分:4)

这通常不是以编程方式完成的,而是由Web服务器处理

对于apache,您可以使用mod_gzipmod_deflate模块。

您可以使用的IIS has settings

答案 1 :(得分:2)

是的,你可以(通过执行压缩的php脚本管道文件)。但除了简单地压缩输出之外,还有更多内容。您应该只将压缩输出发送给支持它的客户端,您应该确保正确处理缓存信息/请求。等

在某些情况下,您的网络服务器支持在不需要PHP脚本的情况下为您完成所有这些操作。如果是Apache,请查看mod_deflate和mod_mime(指令AddEncoding)。

答案 2 :(得分:1)

有几种方法。

您可以告诉网络服务器将文件视为PHP(重命名为.php扩展名最简单),然后添加:

<?php
  header("Content-type: text/css; charset=utf-8");
  ob_start("ob_gzhandler")
?>

到顶部。

您可以编写一个执行相同操作的PHP脚本,但是读取CSS文件而不是内联。

这两个选项都会导致缓存问题 - 如果你想了解缓存控制HTTP标题,你也必须处理它。

最好的选择是忘记PHP,只需配置你的网络服务器来压缩这些文件(使用mod_deflate,mod_gzip或类似文件)

答案 3 :(得分:1)

如果您使用的是较新版本的apache Web服务器,请将以下内容添加到.htaccess文件中:


DeflateCompressionLevel 9  
SetOutputFilter DEFLATE  
BrowserMatch ^Mozilla/4 gzip-only-text/html  
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html  
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary  
Header append Vary User-Agent env=!dont-vary

答案 4 :(得分:0)

你想要完成什么?如果您正在尝试缩小组件以发送到客户端浏览器以便更快地下载它们,那么您应该使用mod_defalte。如果这不是一个选项,您可以在此处找到更多信息:first result from googling "gzip php css"

编辑:我只是想指出,除非你使用旧版本的Apache,否则你应该使用mod_deflate 而不是 mod_gzip。