2010-06-28 65 views
0

我使用.NET和简单的问题是:我怎样才能返回gzip压缩的CSS/JS

如何或者,我可以让网页浏览器知道

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

被gzip压缩?

我可以直接附加.gz的来源吗?

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

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

回答

0

标签响应:

Content-Encoding: gzip 

更新:我才意识到我回答了你的文字问题 - 客户端怎么会知道 - 但不是你所需要的服务器上做,使之发出这样。不幸的是,我没有使用IIS,所以我不能给你一个明智的答案。

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

  • 它测试请求的Accept-Encoding头部是否包括gzip
  • 如果是这样,然后检查是否有filename + ".gz"文件
  • 如果是的话,发送的是,与Content-Encoding: gzip和适当Content-Type
  • 如果没有标注它,检查是否有filename,发送,如果它存在
  • 如果失败,404

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

+0

如果文件名+“.gz”文件存在,您可以分享一些关于Apache检查资源的链接吗?我已经完成了,gzip JS文件并添加了“.gz”扩展名,但它似乎没有任何效果。是否有某种配置指令可以使此行为起作用? – Frodik 2012-01-31 08:25:16

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,并将其发送到浏览器,然后浏览器将该文件解压缩为原始格式。