google-app-engine - 在本地环境中重定向后,我是否应该期待过时的结果?

标签 google-app-engine google-cloud-datastore browser-cache app-engine-ndb

将新实体发布到数据存储后,我将页面重定向到一个新 URL,该 URL 列出了该组中的所有实体。当我重定向时,页面显示过时的结果,我必须重新加载才能看到数据存储中的新实体列表。

我知道最终一致性。这就是我看到陈旧结果的原因吗?

例如,

我的数据存储有一个用户 - 用户 1 然后,在一个表单中,我添加了一个用户——用户 2 该实体被放入数据存储区,然后我重定向到一个新的 url,即“get/users”

在重定向中我只看到用户 1,但如果我刷新页面我看到用户 2。 我有什么办法可以保证或帮助防止过时的结果?

最佳答案

是的,这是你所说的“最终一致性”造成的。

我有一些建议:

  1. 使用 AJAX。使用重定向会导致不必要的额外工作:
    • 一个额外的(不必要的)HTTP 请求(网络带宽、延迟、服务器资源、移动数据成本等)
    • 一个额外的(不必要的)数据存储查询来确认您已经知道的内容
  2. 使用 JavaScript 更新在 XMLHttpRequest 成功时向用户显示的用户列表;不要执行另一个查询。
  3. 如果您确实需要用户对象,您可以从数据存储中通过键获取(而不是查询),这将是高度一致的。
  4. 如果您确实需要强一致性查询,请使用强一致性的祖先查询。在成功响应中发送该查询的结果并相应地更新您的 UI。
    • 注意:使用祖先查询需要一个实体组,该实体组被限制为约 1 次写入/秒;例如,这个速率足以记录博客文章的评论,但可能不足以在您的应用程序中创建新用户

关于google-app-engine - 在本地环境中重定向后,我是否应该期待过时的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15773892/

相关文章:

javascript - 有没有办法从浏览器缓存中添加/删除条目?

python - Google App Engine 的排序问题

google-app-engine - 已部署的 GAE 应用程序上的交互式控制台

java - GAE 数据存储查询整数字段

java - 动态添加clientIds到API注释

javascript - 确定页面在 github 页面上已过时

JavaScript 卡在缓存中

java - 在 Google App Engine 端点 (Java) 中设置响应 header

python - (Python) Google App Engine 中的依赖注入(inject)

java - 没有注册类 'com.sun.proxy.$Proxy33' - GAE 端点上的 BadRequest