用于静态资源的asp.net网站优化 - 开发与生产部署 - 从子域提供静态资源

时间:2010-02-01 22:11:48

标签: asp.net performance optimization

我一直在寻求优化网站,特别是研究CSS精灵,以及从子域(static.mysite.com)提供静态资源。参考:Split Components Across Domains

我们正在使用cassini(附带visual studio)进行开发,它不支持子域。我的静态资源包含在www.mysite.com/Contents/Static/..文件夹中 这适用于cassini和IIS7。

如果我将这些静态资产移动到static.mysite.com,而不对我的代码库进行太多更改(对js / css / images的引用),那么最佳的方法是什么?

我担心的是,cassini不支持子域名,这让我觉得我应该拥有2个代码库?或者我应该在构建期间以某种方式将我对代码库中静态资产的引用从mysite.com/contents/static更改为static.mysite.com?你们是怎么做到的?

PS:从旁注来看,如果你们能指出好的asp.net性能调优文章(虽然google搜索有帮助),那就太好了。

3 个答案:

答案 0 :(得分:0)

我的第一个问题是......你为什么要使用卡西尼?为什么不针对您实际使用的服务器进行开发?

两个代码库是一个可怕的想法......

除非您实际上是从两台不同的机器上提供资源,否则您不会在www.mysite.com/contents/static和static.mysite.com之间看到性能变化。只是不会发生。我一般都认为雅虎的建议非常好......但这个只是愚蠢的。

答案 1 :(得分:0)

这种情况成为您的开发环境和开发人员工作流程的问题。

Cassini在您的dev-env中很好,只要您最终对生产环境中使用的目标Web服务器进行系统/用户验收测试。

如果你想坚持使用Cassini,我会选择一个单独的网络服务器,例如lighthttpd,用于在开发过程中提供静态内容。一旦你从正确的文档根服务,你几乎可以忘记它。

或者,如果您打开运行IIS,那么您可以轻松地转移Cassini。

对于代码中的静态内容引用,一般方法是使用主页(或配置)中的变量为每个静态资源建立绝对URL。我不建议在构建/部署时使用任何字符串替换。

答案 2 :(得分:0)

您可能想要的是一个完全不同的域名。例如,Google使用“gstatic.com”,Facebook使用“fbcdn.net”来提供静态内容。子域之间的cookie可以与服务静态内容的子域共享和不必要地发送/接收,从而增加了开销。您确实在浏览器级别进行DNS查找命中,但是从无cookie域提供静态内容可以减少开销。