在HTML/JSP中引用经过gzip压缩的CSS和JS

6
我正在使用YUI压缩插件来压缩和gzip Java EE 应用程序中的JS和CSS文件。
然而,我不清楚如何在HTML/JSP文件中引用它们。如果我只使用.gzip引用,浏览器会提示错误,显示“资源被解释为Script,但传输类型为application/x-gzip”。
当前的引用看起来像这样(导致上述错误):
<script type="text/javascript" src="/scripts/home.js.gz"></script>

压缩是HTTP的一个特性,你的服务器应该为你完成,你不需要预先对文件进行gzip压缩。 - robertc
3个回答

2
您看到的是浏览器的警告,每当您解释数据与返回的内容类型不同时,它都会显示此警告。
您真正想做的是:
Content-Type: text/javascript
Content-Encoding: gzip

这将消除浏览器错误,同时使浏览器认识到在使用前必须先解压缩该文件。

1

您可以使用普通的.js和.css扩展名引用它们,并通过使用Firebug或开发人员工具检查CSS和JS文件的响应标头来检查gzip是否正常工作。

通常在Web服务器级别执行Gzipping。

如果您正在使用Tomcat,则可以打开Tomcat安装的conf/server.xml并将以下内容添加到连接器定义中。

<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" connectionTimeout="20000"
           compressableMimeType="text/html,text/xml,text/css,text/javascript,text/plain,application/javascript,application/json" 
           compression="2048"/>

对于Apache,请查找mod_gzip或mod_deflate

这些内容应该放在您的根.htaccess文件中,但如果您可以访问httpd.conf,则更好。

<ifModule mod_deflate.c>
<filesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>

0

虽然您可以配置Tomcat来为您执行所有gzip操作,但我建议手动压缩静态资源,如jscss文件,并将它们保存在服务器上作为css.gzjs.gz,然后当请求到来时,您可以使用servlet将这些静态且预先压缩的文件发送给客户端。

请参见https://gist.github.com/suprememoocow/1570654以获取servlet实现。

如果您的服务器具有内置的缓存gzip文件的机制,则可以使用它。就我所知,Tomcat(7)尚未具备此功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接