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

时间:2012-07-14 19:24:17

标签: html jsp gzip

我正在使用YUI compressor plugin在我的Java EE应用程序中压缩和gzip JS和CSS文件。

但是,我不清楚如何在我的HTML / JSP文件中引用它们。

如果我只是使用.gzip引用,浏览器显然会抱怨说 -

Resource interpreted as Script but transferred with MIME type application/x-gzip

当前引用如下所示(抛出上述错误):

<script type="text/javascript" src="/scripts/home.js.gz"></script>

3 个答案:

答案 0 :(得分:2)

您所看到的是浏览器中的警告,只要您以不同于返回的内容类型的方式解释数据,它就会显示此信息。

你真正想做的是:

Content-Type: text/javascript
Content-Encoding: gzip

这将删除浏览器错误,但也会让浏览器识别出该文件在使用前必须解压缩。

答案 1 :(得分:1)

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

Gzipping通常在Web服务器级别完成。

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

<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>

答案 2 :(得分:0)

虽然您可以将tomcat配置为为您执行所有gzip,但我建议您手动压缩jscss文件等静态资源,并将其作为css.gz保存在服务器上,或者js.gz,然后当请求进入时,您可以使用servlet将这些静态和预压缩文件发送到客户端。

请参阅https://gist.github.com/suprememoocow/1570654了解servlet实现。

如果您的服务器具有内置gzip文件的内置机制,那么您可以使用它。据我所知,tomcat(7)还没有这个功能。