【发布时间】:2018-07-30 15:22:39
【问题描述】:
我想知道如何缓解当用户通过 AJAX 与您的网站交互时出现的问题,并且您同时部署了新版本的网站。
想象如下场景:
用户正在通过单击“下一步”按钮浏览您的帖子。这 “下一步”按钮通过 XHR 向服务器提交表单,然后服务器使用服务器生成的 Javascript 响应 (SJR) 进行响应。
SJR 呈现这个 Javascript:
// in create.js.erb
renderNewPost(<%= @post.to_json %>);
(renderNewPost 定义在您连接的、缩小的application.js 中,并由用户的浏览器缓存。)
此时一切正常。
现在,作为新功能的一部分,您将端点的 SJR 更改为首先记录一些内容:
// in create.js.erb
logSomething("hi!");
renderNewPost(<%= @post.to_json %>);
并将函数logSomething 添加到您的application.js。
用户再次单击“下一步”按钮。这一次,SJR 响应 logSomething('hi') 行...但是浏览器没有在任何地方定义 logSomething,因为浏览器加载的 application.js 是第一个版本。
现在用户将无法使用您的网站,直到页面被刷新。
我们如何解决这个问题?手头的问题有名称吗?
【问题讨论】:
-
那么,您是在用户请求之间部署新版本吗?
-
@gasc 是的。不知道为什么这被否决:(
标签: javascript ruby-on-rails ajax