繁体   English   中英

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

[英]asp.net website optimization for static resources- development vs production deployment - serving static resources from subdomain

我一直在研究优化网站,尤其是研究CSS精灵,并从子域( static.mysite.com )提供静态资源。 参考: 跨域拆分组件

我们正在使用Cassini(Visual Studio附带)进行开发,它不支持子域。 我的静态资源包含在文件夹www.mysite.com/Contents/Static/..这对卡西尼和IIS7均适用。

如果我应该将这些静态资产移动到static.mysite.com ,而无需在我的代码库中进行太多更改(对js / css / images的引用),那么哪种方法最理想?

我担心的是卡西尼不支持子域这一事实使我认为我应该有2个代码库? 还是应该在构建过程中以某种方式将对代码库中的静态资产的引用从mysite.com/contents/static更改为static.mysite.com 你们怎么样?

PS:在旁注中,如果你们可以向我介绍优秀的asp.net性能调优文章(尽管Google搜索有帮助),那就太好了。

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

两个代码库是一个可怕的主意...

除非您实际上是从两台不同的计算机提供资源,否则您将不会在www.mysite.com/contents/static和static.mysite.com之间看到性能变化。 只是不会发生。 我通常发现Yahoo的性能建议非常好...但是这个建议很愚蠢。

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

只要您最终对生产环境中使用的目标Web服务器进行系统/用户接受性测试,Cassini就可以很好地在您的开发环境中使用。

如果您想坚持使用Cassini,我将选择一个单独的Web服务器,例如lighthttpd,以在开发期间提供静态内容。 一旦从正确的文档根目录开始提供服务,您就几乎会忘记它。

另外,如果您愿意运行IIS,则可以很轻松地关闭Cassini。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM