我怎样才能返回gzip压缩的css / js

时间:2010-06-28 04:33:50

标签: web-applications web zip httpresponse

我正在使用.NET,简单的问题是:

我如何让网络浏览器知道

<script type="text/javascript" src="/Scripts/myjsfile.js"/>

被gzipped?

我可以将.gz附加到源代码吗?

This article非常酷,它展示了如何通过插入Response.Filter流对象来压缩动态html以返回gzip压缩内容。但是我的css / js不是动态的,所以我没有看到浪费cpu周期为每个请求压缩的重点。

那么我如何告诉网络浏览器它是压缩内容,还是已经知道?

2 个答案:

答案 0 :(得分:0)

带标题的标记响应:

Content-Encoding: gzip

更新:我刚刚意识到我回答了你的字面问题 - 客户端将如何知道 - 但不是你需要在服务器上做什么来让它发送。不幸的是,我不使用IIS,所以我不能给你一个明智的答案。

如果没有人回答你,你可以自己做动态的事情,而且速度并不慢。基本上Apache正在做的事情是:

  • 它会测试请求的Accept-Encoding标头是否包含gzip
  • 如果是,则检查是否有filename + ".gz"个文件
  • 如果是,请发送,使用Content-Encoding: gzip和相应的Content-Type
  • 对其进行标记
  • 如果没有,请检查是否有filename,如果存在则发送
  • 如果失败,请404

你也可以随时告诉它gzip文件;这在空间上更经济,因为你没有在磁盘上保留两个版本的文件,但速度较慢(因为你需要在每次请求时压缩)。

答案 1 :(得分:0)

#####################################################
# CONFIGURE media caching
#
Header unset ETag
FileETag None
<FilesMatch "(?i)^.*\.(ico|flv|jpg|jpeg|png|gif|js|css)$">
Header unset Last-Modified
Header set Expires "Fri, 21 Dec 2012 00:00:00 GMT"
Header set Cache-Control "public, no-transform"
</FilesMatch>
#
#####################################################

将“FilesMatch”更改为您想要的gzip。服务器会自动将未压缩的文件压缩为gzip,将其发送到浏览器,浏览器会将文件解压缩回原始格式。