Backbone.js 缓存 fetch 调用的正确方法是什么?
我想我可能会开始在 Backbone 中进行一些频繁的重叠“获取”调用。缓存这些调用并重新使用它们的最佳方法是什么?
I think I might start making some frequent overlapping "fetch" calls in Backbone. What would be the best way to cache these calls and re-use them?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
实现这一目标有很多可能性。一种是实现您自己的 Backbone.sync 方法版本。然后您可以在那里缓存您的结果(例如,作为 url - 结果对)。调用 fetch 时,您会查找 url,然后返回缓存的结果或从服务器获取结果。
更复杂的方法是使用某种代理集合。这是一个全局可用的集合,也是唯一可以进行服务器端获取的集合。所有其他集合都有一个自定义获取方法实现,通过代理获取其模型。
代理缓存服务器端结果并创建模型实例(并保留它们)。因此,您可以保持对模型实例的控制,并防止您的应用程序中出现多个具有相同 id 的模型。
There are a lot of possibilities to achieve this. One would be to implement you own version of the Backbone.sync method. There you can then cache your results (eg. as url - result pairs). When fetch is called you lookup the url and either return the cached result or fetch the result from the server.
A more sophisticated approach would be to use a sort of proxy collection. This is a globally available collection and the only one that can make serverside fetches. All other collection get a custom fetch method implementation fetching their models via the proxy.
The proxy caches serverside result and also creates the model instances (and keeps them). So you stay in controll of model instances and prevent you from having multiple models with the same id in your application.