asp.net - Javascript 脚本组合和缓存

标签 asp.net javascript jquery gzip httphandler

我正在构建一个 AJAX 密集型网络应用程序(使用 ASP.NET、JQuery 和 WCF 网络服务),并且正在考虑构建一个 HTTP 处理程序来处理我的 JavaScript 文件和 CSS 文件的脚本组合和压缩。我知道不组合脚本通常是一种不太受欢迎的方法,我确信这可能是我最终要采用的方式,但我的问题是......

因为我的很多 JS 文件都是由于我使用的控件,所以它们在第一次加载后不会被浏览器缓存吗?由于在我的 Web 应用程序的许多页面上都可以找到如此多的这些控件,是将我的所有脚本组合起来并提供一个文件(每个页面都会有所不同)还是提供将获得的单个文件实际上更快?缓存?我想我的意思是,通过启用脚本组合,我现在是否失去了浏览器的部分缓存功能?我知道我可以缓存组合脚本,但每个页面的组合脚本都不同,而对于单独的控制脚本,每个脚本都将被缓存,并且每次页面调用的新脚本数量最少。

这有什么意义吗?想法?

最佳答案

您提供的 JS 文件数量越少,您的页面就会越快,因为到服务器的往返次数越少。我会手动将所有常见的 js 代码放入一个文件(或尽可能少的文件),将所有 css 代码放入一个文件等,而不用担心使用处理程序来组合文件。处理程序将花费处理时间来合并文件,因此您也将支付该罚款。您可以在 IIS 上打开 gzip 压缩并让它为您处理。我会运行类似 YUI Compressor 的东西关于生产中使用的 Javascript 文件。

如果处理程序逐页更改文件内容,浏览器将无法缓存它。如果您使用的是 SSL,这一点将毫无意义,因为浏览器无论如何都不会缓存文件。

编辑 我已经更正了一些浏览器(如 FF)可以缓存 SSL 内容,但不是全部。

关于asp.net - Javascript 脚本组合和缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2411603/

相关文章:

asp.net - 创建 Asp.net 重置按钮

javascript - 在 Firefox Addons 中创建这种弹出窗口?

javascript - 单击图标时如何打开每个项目的 Accordion ?

javascript - JQuery 错误下线。添加获取 id 和编号,然后是错误符号?

javascript - jQuery:检查字符串中是否存在特殊字符

c# - 从 JavaScript 调用 ASP 函数

asp.net - 在 ASP.NET 网站中使用状态服务器时如何避免单点故障

asp.net - GridView 中 TemplateField 上的 header

javascript - 显示阅读更多按钮

javascript - 从日期中添加/减去天数不会正确更改年/月