Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 在本地环境上重定向后,我是否应该期待过时的结果?_Google App Engine_Google Cloud Datastore_Browser Cache_App Engine Ndb - Fatal编程技术网

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

Google app engine 在本地环境上重定向后,我是否应该期待过时的结果?,google-app-engine,google-cloud-datastore,browser-cache,app-engine-ndb,Google App Engine,Google Cloud Datastore,Browser Cache,App Engine Ndb,将新实体发布到数据存储后,我将页面重定向到一个新URL,该URL列出了该组中的所有实体。当我重定向时,页面会显示过时的结果,我必须重新加载才能看到数据存储中新的实体列表 我知道最终的一致性。这就是我看到陈旧结果的原因吗 比如说, 我的数据存储有一个用户-用户1 然后,在表单中,我添加了一个user-user 2 这个实体被放入数据存储,然后我重定向到一个新的url,即“get/users” 在重定向上,我只看到用户1,但如果刷新页面,我会看到用户2。 我能保证或帮助防止过时的结果吗?是的,这是由

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

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

比如说,

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

在重定向上,我只看到用户1,但如果刷新页面,我会看到用户2。 我能保证或帮助防止过时的结果吗?

是的,这是由您所说的“最终一致性”造成的

我有几点建议:

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

  • 可能的重复:@Lipis,不完全-这与具体解决一致性有关,而这是在询问这是否实际上是预期的行为,是否与一致性相关。