1

我有一个网页,它引用和初始化同一个 ASP.NET 通用用户控件的多个实例。

我想要做的是使用 jquerydetach()方法在客户端某处缓存/存储这些控件的全部内容(html)。

localStorage 的解决方案不适合这里,因为它有 5MB 的限制,这对我的需求来说太低了。

现在,我正在使用一个全局变量,更具体地说是一个 javascript 数组(键值)来存储数据。

你觉得这个解决方案怎么样?我会注意到浏览器的任何延迟或性能问题吗?该全局变量是否有任何限制?

另外,有没有更好的方法来执行这样的任务?

4

2 回答 2

2

对于跨浏览器兼容性,您可以尝试使用 AJAX 调用来拉取/增加海量数据并缓存调用(存储为 JSON/JSONP)。jQuery 有一个缓存机制,但实现的核心是页面调用的标题。具体来说,您需要在 AJAX 所在的页面上添加ExpiresLast-ModifiedCache-Control

然后,您需要异步提取数据并进行适当的 UI 操作(如果需要)。

您不想将大量数据存储在单个变量中,因为它在通过 JS 过程时会花费更长的时间。

localStorage仍然是一种边缘技术,不同供应商的实现方式不同,并且不向后兼容(尽管有一些 JavaScript 库有助于降低向后兼容性)

饼干不够大

On-Page JSON 或 JS 变量您失去了抽象并增加了初始页面权重(如果您使用移动设备,这将无法令人满意)

无论你做什么实现,我都会运行一些简单的基准性能测试,这样你就有了备份代码的指标

于 2013-07-29T17:33:50.970 回答
1

这将导致浏览器延迟和多个问题。您几乎可以保证移动浏览器无法在这种情况下工作,因为没有明智的移动浏览器会让您在 LocalStorage 对象中下载并存储 5MB+。将 5MB+ 的 HTML 放入任何浏览器的 DOM 中而不期望出现任何类型的性能问题是一个非常糟糕的主意。

如果您不关心移动设备,请查看IndexedDB。它允许更大的存储量,并且即使在会话关闭后它仍然存在。它在最近的 Chrome 和 Firefox 浏览器中得到了很好的支持,但需要 IE10 或更高版本。

于 2013-07-29T17:06:11.977 回答