我有一个资产管理器,用于通过 php 处理 css 和 js。我正在使用 nginx 和 php5-fpm 来加载我的应用程序。但返回的 css 和 js 文件未 gzip 压缩。
例如我的 url 是
http://mysite.com/phpcssprocessor/mycssfile.css
这个通过 php 生成的文件。
这是我的虚拟主机配置:
# /
location / {
# gzip
gzip on;
gzip_static on;
gzip_proxied any;
gzip_types application/javascript application/json application/x-javascript application/xml text/css text/javascript text/plain text/x-component text/xml;
# disable etag
if_modified_since off;
add_header 'Last-Modified' '';
# mvc rewrite
try_files $uri $uri/ /index.php?$uri&$args;
}
您的 PHP 脚本
Content-Type:
是否正确设置了 HTTP 响应标头?符合你的gzip_types
选择吗?您的客户端
Accept-Encoding: gzip
是否正确设置了 HTTP 请求标头?http
您的相关文件server
或location
从中php
处理的文件是否包含 gzip 压缩指令?当通过从 a到 a发生内部重定向时,在中指定任何类型的 gzip 压缩将是一个 noop — 您必须全局指定它,或者在完成请求的最后指定(中间位置不影响最终处理) ).try_files
/
location
php
location
/
location
location
如果没有以上所有三个,您将无法进行任何 gzip 压缩。
在你的具体情况下,似乎
try_files
重定向到另一个location
让你感到悲伤,因为我看到你必须只指定 gzip 东西/
location
,这可能是一个 noop。将 gzip 指令移到/
location
. 同样,您可能也想将其他选项从 atry_files
/
location
中移开。我刚刚遇到了同样的问题,终于解决了。
问题是 style.css.php 文件位于顶部:
这阻止了 nginx 对文件进行 gzip 压缩。显然,由于“字符集”部分,“gzip_type text/css”不会选择它。
我从 header() 参数中删除了“;字符集:UTF-8”,nginx 开始压缩输出。
后来我补充说
在那个 CSS 处理器的 nginx 位置块中,所以我得到了正确的标题并且 gzip 正在工作。
希望这也能帮助其他人。