开发者

Referenced GZipped JavaScript files not working

This platform I'm working on uses some mechanics to determine if it should do a <script> link to a straight up .js file or a .js.gz file, depending on browser type and version.

On the current server, everything works fine, and both js and js.gz files work, and the javascript is executed in the browser. However, transfer it all over, verbatim, to a new server, and suddenly Firefox stops using the gz files. It will download them (as can be seen using Firebug) but it's not executing them.

Any ideas on why the gzipped files aren't being used properly?

Response headers From Old

Date              Thu, 25 Nov 2010 17:06:32 GMT
Server            Apache
Last-Modified     Mon, 22 Nov 2010 21:31:00 GMT
Etag              "55808a3-3f1e-4ceae114"
Accept-Ranges     bytes
Content-Length    16158
Keep-Alive        timeout=15, max=100
Connection        Keep-Alive
Content-Type      application/javascript
Content-Encoding  gzip

Response Headers from New

Date               Thu, 25 Nov 2010 17:00:11 GMT
Server             Apache/2.2.17 (CentOS)
Last-Modified      Thu, 25 Nov 2010 16:11:00 GMT
Etag               "693c304-4178-495e2da08cd00"
Accept-Ranges      bytes
Content-Length     16760
Connection         close
Content-Type       application/x-开发者_如何学JAVAgzip

I'm going to assume it's from the Content-Encoding and Type, though I've no idea how to change this.

FIX Taking the answers and comments into account, I made the following changed to /etc/httpd/conf/httpd.conf, where commented (#) lines are what was there, uncommented is my replacement:

# Technically just uncommented this line
AddEncoding x-gzip .gz .tgz

#AddType application/x-gzip .gz .tgz
AddType application/x-gzip .tgz
AddType application/javascript .gz


This will be a server side setting/module - clients don't know how to handle gziped files however they usually know how to handle files compressed in transit as long as you tell them how you've compressed them using a Content-Encoding header.

basicly i think you'll find that the server isn't sending a Content-Encoding: gzip header on the new server, but it is on the old.


If you happen to use Apache, it might be possible that your former web server had MultiViews enabled but your current web server doesn’t. Try to enable it in your current server too (at least for that directory):

Options +MultiViews
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜