在IIS中启用JavaScript GZIP压缩?

7
我们希望通过使用GZip压缩我们庞大的JavaScript文件来加快网站页面加载速度。我知道可以通过IIS实现,但是我找不到一个简单易懂的步骤指南来实现它。
如果有人能够指引我这样一个指南,我将不胜感激。由于我以前从未做过这个,所以需要非常基础的介绍。
我们正在运行Windows Server 2008 R2上的IIS7.5
非常感谢你的时间。
3个回答

9
原来这很简单:
  1. 进入IIS管理器
  2. 进入相关的站点
  3. 进入“压缩”(在IIS下),并双击它
  4. 确保“启用静态压缩”已启用。
就是这么简单!
唯一的问题在于动态生成的内容,但我不想压缩它,所以这就是我的答案。(难以置信这么简单...其他指南让它看起来像噩梦!)

6
请注意,当您进行测试时,IIS可能不会提供压缩文件,因为:必须从两台不同的计算机使用两个不同的IP地址访问IIS 7上的同一页面。如果您继续使用同一台计算机访问该页面,它将永远无法压缩页面。这很奇怪,但是确实如此。详情请参考:http://coderjournal.com/2008/04/iis-7-compress-javascript-gzip/ - Matthew Lock
@AlirezaMasali 你是在尝试压缩动态内容吗? - Chuck Le Butt
@Chuck Le Butt 我希望我的JS文件不会以JavaScript代码的形式被读取。 - Alireza Masali
@AlirezaMasali 你的JS文件始终可以作为代码读取,否则你的浏览器无法执行它们。压缩不会加密你的JS,而是使用GZIP对其进行压缩,当浏览器接收到文件时,它会自动解压缩。无法加密JS。你最好的选择是使用像Uglify这样的工具来混淆它。 - Chuck Le Butt
@ChuckLeButt,我该如何像这个网站:http://dean.edwards.name/packer/一样进行Base64编码? - Alireza Masali
1
@AlirezaMasali 尝试使用minify,或者在这里创建一个新问题询问如何做。可能会感兴趣的链接:https://dev59.com/lHM_5IYBdhLWcg3wgjW2 - Chuck Le Butt

5

'启用静态压缩' 起初对我没有起作用。

我发现当我在我的网站的web.config文件中在<system.webserver>之间添加以下行时,它可以正常工作:

<staticContent>
  <remove fileExtension=".js" />
  <mimeMap fileExtension=".js" mimeType="text/javascript" />
</staticContent>

但是我必须在每个web.config文件中设置它,如果我有一个在IIS上运行的PHP网站,则压缩不起作用,此外,似乎对我的HMTL也没有作用,因为我得到(在ySlow中):

Grade C on Compress components with gzip

There are 2 plain text components that should be sent compressed

* http://www.ville.st-augustin.qc.ca/
* http://jquery-ui.googlecode.com/svn/tags/1.8/ui/minified/jquery.effects.core.min.js

第二个是来自CDN的,对吧?所以我猜你没有控制权。 - UpTheCreek
1
@UpTheCreek 是的,你说得对,我之前不知道,或者当时喝醉了才写下这个...谢谢。 - VinnyG
对我没有起作用,它仍然只发送未压缩的.js文件,.css文件被压缩了。 - coding_idiot

2

一定要检查当你启用静态内容压缩时,JavaScript文件是否确实被压缩。在我们的情况下,这并不是事实。本文《让IIS 7压缩JavaScript》提供了一个很好的概述,在评论中@Doug Mayer建议启用动态内容压缩,这对我们起了作用。

所以步骤如下:

  1. 打开IIS管理器
  2. 选择所需的级别、服务器、Web应用程序、文件夹
  3. 在IIS下打开压缩
  4. 选中“启用动态内容压缩”
  5. 应用

如果此选项为灰色,则必须首先在服务器管理器中的Web服务器|性能下添加服务器角色服务“动态内容压缩”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接