仅提供静态内容的网站的IIS 7.5优化


21

我正在寻找一个无Cookie的域,该域旨在为Web应用程序提供静态内容,类似于堆栈交换站点使用的http://sstatic.net/站点。

我的问题是,对于这样的域,我可以对IIS 7.5设置进行哪些优化?例如,它只负责提供静态内容,而不负责任何其他事情,因此禁用ASP.NET集成是否对该网站来说是个好办法?

欢迎使用IIS 7.5建立此类站点的任何建议或参考。

编辑

为了明确起见,这不是服务器上的唯一站点,因此建议的优化应该针对站点级别,而不是服务器级别的配置。

Answers:


18

在此有一些注意事项,其中一些是在IIS上处理的(HTTP压缩,缓存头fx),还有一些是在构建过程中/在部署之前处理的(例如Javascript和CSS文件串联和空格缩小)。

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

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

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

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

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

  • 应该启用HTTP保持活动状态(与缓存标头相同的文档)。

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

完成后,请尝试从启用了YSlow静态服务器下载一些文件。我发现“经典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

感谢您的评论:我已经注意了您提到的制作前注意事项。我真正想要的是IIS配置的精髓。由于没有什么,但静态内容,我想我可以从HTTP管道等去掉了很多东西
DanP

1
@DanP:设置IIS确实没有太多工作。Microsoft擅长发布“默认情况下安全”的最小配置。通过删除作为基本服务器角色一部分的IIS组件进行性能优化是IMHO过早优化。我几乎可以保证性能提升是不值得的,因为静态文件服务通常具有很少的服务器负载。为了提高最终用户的性能,重要的部分是正确使用HTTP语义-根据上述文档,缓存标头,压缩,保持活动状态。
Jesper M

默认值是为静态文件服务而设计的-如果您仅添加Web服务器角色,则设置了用于服务静态文件的最小管道。因此,为了尽量减少管道-请勿安装其他任何东西!
TristanK 2011年

@TristanK:我想我应该更具体...这不是IIS服务器上的唯一站点,因此我需要在站点级别而不是服务器级别进行优化。
2011年

是的,那是关键信息。如果您确定这是您选择的路径,我认为a)安装一个新的路径与之进行比较,b)使用precondition =“标记要剥离的模块/处理程序(不属于默认安装)。 AppPoolName!= StaticPool”(可能在此处向后语法)。在给定的应用程序池中包括/排除模块就差不多了。
TristanK 2011年

9

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.