6

我正在使用YUI 压缩器插件在我的 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>
4

3 回答 3

2

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

你真正想做的是:

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

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

于 2014-05-13T17:35:59.340 回答
1

您可以使用普通的 .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

这在您的根 .htaccess 文件中,但如果您可以访问 httpd.conf 那就更好了。

<ifModule mod_deflate.c>
<filesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>
于 2012-07-14T21:06:51.513 回答
0

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

有关 servlet 实现,请参阅https://gist.github.com/suprememoocow/1570654

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

于 2014-05-17T10:14:15.323 回答