【问题标题】:JavaScript cache objects with compressing带有压缩的 JavaScript 缓存对象
【发布时间】:2012-06-08 13:20:58
【问题描述】:

我需要存储一些带有数据的对象缓存。放入缓存时如何压缩它们,读取时如何解压缩?

出于我的目的,我需要在客户端逻辑中缓存一些商店页面。我想我可以有很多数据,所以当记录数超过 500 时,我会清除旧值。 我的缓存只是一个 JavaScript 对象,所以我需要将所有数据(对象数组)存储在内存中。

正如 Oleg Volkov 所说(привет!),我描述了我的任务:

1) 有一些 ExtJS 4.1 存储和组合多选和分页

2)我写了一些功能(客户端和服务器端),它们可以 a)在放置我要设置的值时获取页面)b)可以设置值,以将它们存储在 foundValues 对象中以保存它们值(在 setRawValue 中设置)并且可以在我跨页面移动时突出显示它们。

3) 我的 pageSize 是 25。所以,如果我想做 setValues([1, 34, 10]),store 会从 firstPage 获取值,然后加载第二个,获取值 (34),然后会去 first得到10!但我想存储从 1 到 25 的所有值都属于第一页,并从缓存中获取它,而不是在 Ajax 请求中。

【问题讨论】:

  • 使用(非)压缩算法?或者事件更好,让浏览器为您完成工作。
  • 我可以使用哪些算法?你知道js中的一些好的实现吗?
  • 让浏览器来做?这是如何运作的?您可以对其进行 GZIP 压缩以从服务器传输,但是对于本地存储,这将如何工作?
  • 真正的问题是:为什么你需要压缩你的数据?如果您觉得需要它,那么您可能首先要处理 太多数据 以实现高效的客户端脚本。
  • 你在哪里缓存数据?

标签: javascript caching


【解决方案1】:

您不应该这样做,除了需要花费大量空间(代码)和时间(CPU)之外。空间非常宝贵的系统(移动设备?)也只有有限的 CPU 能力(而且压缩东西会消耗能源!),所以如果你需要它,无论如何都不应该这样做。

客户端代码(今天)应该将大量数据(如果很多)保存在服务器上,并且只根据需要请求小块。浏览器的 JS 引擎可能会或可能不会自己进行压缩,这真的不是你作为 JS 程序员的事。和内存管理一样,是故意远离JS程序员的手的。

所以答案是:重新设计您的应用程序以遵循 JS 客户端/服务器编程和交互的当前编程范式。

【讨论】:

    【解决方案2】:

    您在客户端压缩和解压缩数据的努力不值得在内存中减小数据大小。

    如果您需要压缩,请检查这些链接。

    1. -
    2. JavaScript implementation of Gzip
    3. Can I compress data in JavaScript?
    4. http://forums.devshed.com/javascript-development-115/compress-strings-arrays-263804.html

    【讨论】:

      猜你喜欢
      • 2013-06-19
      • 2011-04-10
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 2023-03-14
      相关资源
      最近更新 更多