0

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

我如何或可以让网络浏览器知道

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

被压缩了吗?

我可以附加.gz到源吗?

这篇非常酷的文章展示了如何通过插入 Response.Filter 流对象来压缩我的动态 html 以返回 gzip 压缩的内容。但是我的 css/js 不是动态的,所以我看不出浪费 cpu 周期来压缩每个请求的意义。

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

4

2 回答 2

0

带有标头的标记响应:

Content-Encoding: gzip

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

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

  • 它测试请求的Accept-Encoding标头是否包含gzip.
  • 如果是,则检查是否有filename + ".gz"文件
  • 如果是,发送它,用Content-Encoding: gzip适当的标签标记它Content-Type
  • 如果没有,请检查是否存在,如果存在则filename发送
  • 如果失败,404.

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

于 2010-06-28T04:38:56.917 回答
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,将其发送到浏览器,浏览器会将文件解压缩回原始格式。

于 2010-06-28T04:43:07.473 回答