gpt4 book ai didi

javascript - 在性能受限的环境中缓存文本/图像资源

转载 作者:行者123 更新时间:2023-11-28 02:14:30 25 4
gpt4 key购买 nike

我正在开发性能极其受限的设备。由于 AJAX 请求的开销,我打算在浏览器中积极缓存文本和图像资源,但我需要将每个设备的缓存大小配置为低至 1MB 的文本和 9MB 的图像——对于多屏幕图形应用程序来说是一个相当大的挑战。

由于设备很容易达到内存限制,因此我必须非常谨慎地管理应用程序的大小:代码文件大小、并发 HTTP 请求数、事件分派(dispatch)时的 JS 处理器周期数、限制 CSS 回流等。我今天的问题是如何为文本资源和图像开发大小受限的缓存。

对于文本,我已经推出了自己的 cache使用 JSON.encode().length 表示对象,使用 'string'.length 来估计大小。应用程序手动获取/设置缓存条目。当达到可配置的上限时,类垃圾会从 gcLimitgcTarget 大小进行 self 收集,为最后访问的属性赋予权重(即,如果最近访问过某些内容,第一次跳过收集该对象)。

对于图像,我打算预加载界面元素,并让浏览器通过删除 DOM 元素来自行处理垃圾回收,并且从不持久存储 Image() 对象。对于预加载,我可能会再次推出自己的预加载 - 我有可以模仿的示例,例如 FiNGAHOLiC 的 ImgPreloader 和 this 。我需要记住“下载窗口大小”和“最大缓存请求”等功能,以确保我不会无意中使设备过载。

在如此受限的环境中工作是一个巨大的挑战,并且像 Backbone 这样的常见框架不支持“最大集合大小”。在 SO 的其他地方,用户引用了 HTML5 localStorage 的 5MB 限制,但我的目标不是 session 持久性,所以我看不到好处。

我不禁觉得可能有更好的解决方案。有想法吗?

编辑:@Xotic750:感谢您对 IndexedDB 的认可。遗憾的是,这个应用程序是一个基于 Opera/Presto 构建的标准网页。更好的是,该平台不提供持久性。摇滚和艰难的地方:-/。

最佳答案

如果应用程序是浏览器扩展(您没有提及您的应用程序是什么),则 localStorage 和 sessionStorage ( DOM Storage ) 限制不适用 ( or can be overridden )。

本地存储是持久的

sessionStorage 是 session 性的

想法

看看IndexedDB尽管尚未得到广泛支持,但它更加灵活。

此外,还有一些对 Chrome 存储空间的引用

Managing HTML5 Offline Storage

chrome.storage

关于javascript - 在性能受限的环境中缓存文本/图像资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16599034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com