2

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

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

是否可以在 PHP 中使用 ob_start("ob_gzhandler") 来压缩这个 css 文件?

如何?

4

5 回答 5

4

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

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

IIS具有您可以使用的设置。

于 2009-06-05T14:09:46.773 回答
2

是的,您可以(当通过执行压缩的 php 脚本传输文件时)。但它不仅仅是简单地压缩输出。您应该只向支持它的客户端发送压缩输出,您应该确保正确处理缓存信息/请求。等等。

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

于 2009-06-05T14:09:55.633 回答
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

于 2009-06-05T14:21:17.717 回答
1

有几种方法。

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

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

到顶部。

您可以编写一个 PHP 脚本来做同样的事情,但读取 CSS 文件而不是内联。

这两个选项都会导致缓存问题 - 如果您想对此保持清醒,您还必须注意缓存控制 HTTP 标头。

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

于 2009-06-05T14:11:08.253 回答
0

你想达到什么目的?如果您尝试缩小组件以发送到客户端浏览器以便更快地下载它们,您应该使用 mod_defalte。如果这不是一个选项,您可以在此处找到更多信息:谷歌搜索“gzip php css”的第一个结果

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

于 2009-06-05T14:12:48.733 回答