javascript - 如何将代码推送到 AJAX/JS 密集型生产站点

标签 javascript ajax deployment continuous-integration jenkins

我们目前使用 Jenkins 将代码部署到我们的生产 Web 服务器。它会压缩所有相关的源代码并将其通过 SCP 传输到服务器,然后远程解压缩并重新启动 apache(我们使用的是 APC,所以这会清除 PHP 缓存)。

该站点主要由 AJAX 驱动,当用户与该站点交互时,浏览器很少刷新。在做这种代码推送时,我担心如果浏览器不刷新,用户得不到前端代码的最新变化。因此,我们在深夜执行此操作,以确保我们的大多数用户都离开了网站。

缓解此问题的常用技术有哪些?如果我们需要在白天部署代码并且用户在站点上处于事件状态,那么这是不可持续的。可以对此部署过程进行任何其他改进吗?

谢谢!

最佳答案

这听起来不像是部署过程的问题,因为它是应用程序/站点的问题。

首先要检查 Web 服务器的配置,以确保“Expires”/“Cache-Control” header 都设置为合理的值,这样您就不会在文件上设置 1 年的缓存时间您可能每周(甚至每天)更换一次。

接下来可以在应用程序中完成的事情是在 JavaScript 中包含检查。每个 HTTP 响应(AJAX 或其他方式)都可以返回带有版本号的自定义 HTTP header 。如果重新部署应用程序,应用程序/服务器必须在该字段中发送新的版本号。如果 JavaScript 检测到版本号已在 session 中更新,它会向用户显示一条消息和/或强制重新加载页面。

关于javascript - 如何将代码推送到 AJAX/JS 密集型生产站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8425659/

相关文章:

javascript - GraphQL : Overriding slugs

javascript - XHR HEAD 请求是否可以不遵循重定向(301 302)

ajax - 通过Ajax调用通过Web方法从C#下载文件?

java - 在使用 Java 6 的 Mac 上运行 JavaFX 2?

java - 如何修复 Tomcat 服务器中的错误内存泄漏

javascript - 启用/禁用输入 - knockout

对象值的Javascript setter

javascript - 在 angular6 模板中使用 getter 方法或类变量?

jquery - 将ajax响应数组存储到变量中以供以后使用

python - 如何一键部署django项目和运行环境