针对仅提供静态内容的站点的 IIS 7.5 优化

Dan*_*anP 21 iis optimization iis-7 web-server yslow

我希望设置一个无 cookie 域,旨在为 Web 应用程序提供静态内容,类似于堆栈交换站点使用的http://sstatic.net/站点。

我的问题是,对于这样的域,我可以对 IIS 7.5 设置进行哪些优化?例如,除了提供静态内容之外,它永远不会负责任何事情,那么禁用 ASP.NET 集成是否是该站点的一个好举措?

非常欢迎有关使用 IIS 7.5 设置此类站点的任何建议或参考。

编辑

澄清一下,这不是服务器上唯一的站点,因此建议的优化应该针对站点级别,而不是服务器级别的配置。

Jes*_*r M 18

这有几个注意事项,一些在 IIS 上处理(HTTP 压缩、缓存头文件 fx),一些在构建过程中/部署前处理(例如 Javascript 和 CSS 文件连接和空格缩小)。

因此,在一个答案中给您一个完整的纲要有点困难,因为其中一些将取决于您的构建和发布方法。在高级步骤中:

  • 该站点是“无cookie”的,因为您使用了一个新域,该域与您的网络应用程序无关。由于您没有为域设置任何 cookie(使用 fx .NET 应用程序代码),因此它是“无cookie”的。

  • 绝对 应该为静态文本内容(例如 Javascript 和 CSS)启用 HTTP 压缩

  • 我不是最出色的 IIS 管理员,但据我所知,您只需要与基本“Web 服务器 (IIS)”服务器角色相关联的默认 IIS 组件。

  • 绝对应该为静态内容启用长缓存标头。一般建议是 31 天,但您可以将其设置得更高或更低。请记住,如果您使用长缓存标头提供静态内容,则在更改文件时必须更改 URL,以避免客户端重新使用旧的缓存内容。

  • 应该启用 HTTP keep-alive(与缓存标头相同的文档)。

除此之外,还有部署前任务,例如压缩 Javascript 和 CSS 的空白,以及理想情况下更好地压缩 PNG等。这是您的开发工具,构建周期有助于决定如何进行。

完成后,尝试从启用 YSlow静态服务器下载一些文件。我发现“Classic V2”规则集对这项工作的影响最大,所以我建议根据这个 YSlow 规则集检查你的分数。

在“经典 V2”规则集中,这些规则完全适用于您的静态服务器 IIS 实例和内容:

3. Add an Expires or a Cache-Control Header
4. Gzip Components
10. Minify JavaScript and CSS
11. Avoid Redirects
13. Configure ETags
19. Use Cookie-Free Domains for Components
22. Make favicon.ico Small and Cacheable
Run Code Online (Sandbox Code Playgroud)


UpT*_*eek 9

这里有一篇非常有趣的文章,其中有人使用 IIS 来提供静态文件。它主要集中在调整 IIS 文件缓存设置以限制磁盘活动(这是他的瓶颈)。他说他的性能提高了 20 倍。