我们目前使用 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/