如何仅在数据更改时取消缓存数据
How to go about uncaching data only when the data changes?
我有一个SCORM(eLearning)web应用程序(javascript/html),它通过ajax请求从xml文件加载内容。这些xml文件是从drupal构建的CMS(内容管理系统)生成的,因此内容每隔一段时间就会发生变化。
由于内容(文本、图像)很少更改,我希望大部分时间都将数据缓存在用户浏览器中,但在内容更新时则不然。目前,我有一个cachebuster字符串,当任何内容更新时,它会被更新。当加载这些文件时,我会在url中使用该字符串(例如,路径/to/content.xml?uncache=RANDOMSTRING)。
然而,现在我遇到了一个问题,Firefox在客户端服务器上陷入重定向循环(因为cachebuster字符串?)。所以我做了一些搜索,发现这不是取消缓存数据的最佳方法。
有人在这个舞台上有经验吗?我想听听你对此事的看法。。
编辑(更多信息):除了受限于应用程序数据的SCORM API之外,Web应用程序无法与主机服务器通信。它可能无法与第三方服务器通信,因为它也可能在内部网中。基本上,主机服务器加载索引文件,然后我的应用程序完成它的任务。它加载一个"结构文件",其中包含有关应用程序的信息,并具有更新的cachebuster字符串(本质上,这是dferraro下面提到的版本字符串)。
您可以在客户端上跟踪"版本号"或令牌。。然后有一个定时器,每隔一段时间就会触发一次,以获取最新的"版本号"。如果发生更改,则重新刷新所有数据。这将是一种"轮询"方法,很可能是满足您需求的最佳解决方案。
如果您的需求需要比轮询方法更强大的解决方案,您可以采取"推送"方法。根据你的堆栈,你可以使用一些更智能的技术让你的服务器自动通知你的客户端代码更新。这方面的例子包括PokeIn、SignalR甚至Service Broker。
- 使用 ng-change 对输入类型数据进行 JavaScript 取消事件
- 如何在使用jquery向数据库发送数据时取消激活的按钮
- 如何仅在数据更改时取消缓存数据
- 如何使用复选框jQuery取消选中并刷新数据
- Chrome扩展:从弹出窗口发送数据以取消链接JS文件
- 取消选择数据表中的所有选定行
- 如何一次只选择一个单选按钮,并在数据来自数据库时在javascript中取消选择其他单选按钮
- 如何恢复jQuery Choosen'取消选中所有选项时的数据占位符
- Kendo UI网格取消不会恢复原始数据
- 从文本字段获取数据,并确定是按了“是”还是按了“取消”
- Bootstrap-btn组,数据切换=“;按钮”:如何使用JS选择一个按钮并取消选择所有其他按钮
- Javascript,在确认窗口中按OK后清除表单.但如果取消确认,则保留表单数据
- 使用取消按钮恢复表单数据
- 显示隐藏数据加载和复选/取消单选按钮
- 如何不为取消选中的复选框的禁用文本区域发送数据
- 取消单击数据绑定
- 取消要提交的表单,不更改实体的数据
- 异步发布这些数据以及取消/排队新请求的正确方法是什么?
- 检查会话是否为空,取消设置,然后发送$_POST数据
- 当单击Primefaces数据表中的另一行时,不要取消选择行