背景:
我有一个单页 JavaScript 网站,每天至少部署一次。它获得了合理的流量,并且用户在其上停留了相当长的时间,直到他们结帐并且 JavaScript 通过 XHR 与后端交互。
问题:
部署后,浏览器中加载的 JavaScript 可能不再与后端兼容(本例中为 Rails)。
可能的解决方案:
a)定期比较资产管道指纹,window.confirm 与重新加载请求是否不相同。
b)发送带有 XHR 请求的 X-JS-fingerprint 标头,如果不兼容则返回 409 Conflict,JavaScript 将触发错误和 window.confirm 以重新加载。
c)运行两个后端;一个使用新的 JS 和新的后端代码(SERVER-1)立即部署,另一个仍然支持旧的 JavaScript XHR 请求格式(SERVER-2)。就像b) X-JS-fingerprint 标头将被发送,但不是 409,而是将 307 临时重定向发送到 SERVER-2 以完成请求。一旦旧会话全部清除,SERVER-2 就会被部署并关闭,直到再次需要它为止。
如果有人以前考虑过这个问题,我很感兴趣。如果您对此主题有任何想法,请告诉我。