ExtJS 的 store 将所有数据保存在哪里

Posted

技术标签:

【中文标题】ExtJS 的 store 将所有数据保存在哪里【英文标题】:Where does ExtJS's store keeps all the data 【发布时间】:2013-11-18 09:45:01 【问题描述】:

我想知道 ExtJS 将所​​有数据保存在哪里?我知道数据存储在内存中,但我想知道它是在内部使用 html 5 本地存储还是使用了任何其他技术?

谢谢, 深入了解

【问题讨论】:

【参考方案1】:

视情况而定。

在任何情况下,商店的数据都存储在 javascript 对象中。商店通过代理保存其数据。如何存储这些数据是一个配置问题。您可以配置不同类型的代理:

客户端存储

Lo​​calStorageProxy - 如果浏览器支持,则将其数据保存到 localStorage SessionStorageProxy - 如果浏览器支持,则将其数据保存到 sessionStorage MemoryProxy - 仅在内存中保存数据,刷新页面时所有数据都会丢失

服务器端存储

Ajax - 向同一域中的服务器发送请求 JsonP - 使用 JSON-P 向不同域上的服务器发送请求 Rest - 使用 RESTful HTTP 方法 (GET/PUT/POST/DELETE) 与服务器通信 直接 - 使用 Ext.direct.Manager 发送请求

更多详情请联系in the docs。

【讨论】:

感谢您的回答。使用 LocalStorageProxy 和 SessionStorageProxy 时,即使页面被引用,系统是否会持久化数据? 是的,对于 SessionStorage,数据会一直保存到会话被销毁,对于 LocalStorage,数据会一直保存到用户清除 HTML5 LocalStorage 缓存。 感谢您的快速回复。我还有一个问题。如何在 ExtJs 上下文中定义会话? sessionStorage 与 Ext 无关。 w3schools.com/html/html5_webstorage.asp 说:sessionStorage 对象等于 localStorage 对象,只是它只存储一个会话的数据。当用户关闭浏览器窗口时,数据被删除。 我不使用这个,我在我的项目中使用服务器端存储。所以我没有本地和会话存储方面的经验【参考方案2】:

数据存储在称为MixedCollection 的内存集合中。它是一个有序的集合,但它也允许你按键查找数据,所以它就像一个有序的 hashmap。

【讨论】:

以上是关于ExtJS 的 store 将所有数据保存在哪里的主要内容,如果未能解决你的问题,请参考以下文章

无法在 ExtJS 中使用代理保存数据

ExtJS:使用一个网格加载多个商店

Extjs mvc 将记录添加到网格面板

ExtJS:重新加载数据存储而不重绘网格

ExtJs之Ext.data.Store

Extjs中如何遍历grid的数据(正在显示的数据)