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



我正在使用YUI压缩器插件压缩Java EE应用程序中的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>

您在浏览器中看到的是一个警告,只要您对数据的解释与返回的内容类型不同,它就会显示出来。

你真正想做的是:

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

这将删除浏览器错误,但也会使浏览器认识到该文件必须在使用前进行解压缩。

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

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

如果您使用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

这会出现在root.htaccess文件中,但如果您可以访问httpd.conf,那会更好。

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

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

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

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

最新更新