我正在使用 ASP.NET MVC3 开发企业应用程序。当然,我有不同的主布局和多个 View 。
我的担忧
- 在主布局中包含所有 js/css 文件可能会影响页面的性能
- 在 View 中包含文件(在需要的地方)会创建重复引用(启动 jquery/其他库)
- 引用越多,客户端和服务器之间的来回请求越多 - 这反过来会影响输出页面的性能
我的想法
- 创建所需资源的自定义列表并将其存储在 ViewBag 中。让主布局引用此对象以包含 js/css 文件
- 或者添加引用带有某个键(用于标识正在呈现的页面的唯一值)的操作的链接,并动态生成包含所有必需资源的输出作为单个响应。并使用唯一键缓存输出(inmem/staticfile)以用于后续请求。一种自定义资源捆绑。
请分享您的想法,欢迎任何想法和建议!
EDIT: Sep.17.2012
以下答案更多地讨论了 Web 应用程序开发领域的优化技术 - 感谢这些答案。
我想从架构的 Angular 来讨论,重点是创建一个被渲染的页面所需要的动态资源集合。
例如,在特定 View 中我想使用需要 jquery-ui-1.8.11.min.js 的 jQuery UI,在某些 View 中我想使用需要 MicrosoftMvcAjax.js 和 jquery.unobtrusive 的 MVC3 ajax -ajax.min.js
我不想在主布局中包含永久引用,这将导致为所有 View 加载这些 js。相反,我想在运行时动态包含 js 文件。
希望这可能会更加清晰!
感谢您的帮助 - Vinod
最佳答案
您需要首先考虑减小下载大小:
- 将所有 js 和 css 放入尽可能少的文件中。这是因为客户端在任何时候只能打开
2个HTTP channel(大多数浏览器现在支持更多,信息here),之后的所有文件下载都会排队,直到前面的文件下载完成。 - minify你的 js 和 css。
一旦你把它缩小到一个合理的大小,你就可以考虑上面的内容了。您想预先下载最少量的内容,所以掌握。这将提高性能,因为客户端可以缓存它。缓存是一件好事,这样客户就不必在每次访问您网站上的页面时都请求 js 和 css。
您可能还想考虑应用 HTTP 过期 header 。
Yahoo 在许多这些想法上做了一个很好的网站:http://developer.yahoo.com/performance/rules.html
另外不要把你的js放在viewbag里。这是服务器上不必要的开销和负载。只需在您的页面中添加引用即可!
MVC4 现在支持 bundling
关于javascript - 在企业应用程序框架中包含 js/css 文件的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154859/