好的,所以我用Google搜索了几页并提出了以下解决方案:
在.htaccess中添加它#Active GZIP for php-files
php_flag zlib.output_compression On
php_value zlib.output_compression_level 5
这适用于.js和.css:
AddHandler application/x-httpd-php .css .js
php_value auto_prepend_file /Library/WebServer/Documents/blog/code/Helpers/ContentHeader.php
将执行.js以及.css作为php脚本。第二行包括以下页面:
<?php
$pathInfo = pathinfo($_SERVER['PHP_SELF']);
$extension = $pathInfo['extension'];
if($extension == "css")
{
header("Content-type: text/css");
}
if($extension == "js")
{
header("Content-type: text/javascript");
}
?>
将标题“text / css”发送到.css文件,将“text / javascript”发送到javascript文件。到现在为止还挺好。然而问题是我使用的一些缩小的javascripts我得到某种php错误:
<br />
<b>Parse error</b>: syntax error, unexpected ']' in <b>/Library/WebServer/Documents/blog/public/scripts/prettify/prettify.js</b> on line <b>18</b><br />
或
<br />
<b>Warning</b>: Unexpected character in input: '\' (ASCII=92) state=1 in <b>/Library/WebServer/Documents/blog/public/scripts/showdown.js</b> on line <b>29</b><br />
<br />
<b>Parse error</b>: syntax error, unexpected '?' in <b>/Library/WebServer/Documents/blog/public/scripts/showdown.js</b> on line <b>29</b><br />
那么,有没有更好的方法呢?我能想到的唯一选择是手动进入.javascript文件并“纠正php不喜欢的错误”。但它不应该是一个更容易的解决方案吗?
答案 0 :(得分:6)
我们使用Apache Mod_Deflate并使用此处显示的示例配置。在不破解PHP的情况下工作得很好。
答案 1 :(得分:2)
我实际上是从PHP脚本提供我的JS文件。不是因为这个问题,所以我可以控制expires头和缓存。一般模型是:
URL中的时间戳允许刷新脚本文件。
现在这与gzipping有什么关系?简单。在我的js.php脚本的顶部是:
ob_start("ob_gzhandler")
如果客户端支持gzip压缩(以及使用输出缓冲),它会打开gzip压缩。
真的很有效。
尝试将自己限制在一个JS和一个CSS文件中。必要时将它们合并。我也用CSS文件做同样的技巧(当然没有缩小)。
此解决方案的优点是它仅依赖于启用mod_rewrite。不需要其他扩展(ob_gzhandler是PHP的标准部分)。另外,需要一个脚本来组合文件(除非你在构建过程中这样做,但我发现这有点繁琐)。
答案 2 :(得分:1)
您收到此错误的原因是脚本包含<?
。
例如,在prettify.js中是这样的:
/^[^<?]+/
您将此传递给PHP,以便再次启动PHP引擎并看到意外的]
。
如果您需要更多控制权,我会使用@ jonstjohn的方法,或@ cletus's。