推送网站更新,而不会影响用户

时间:2015-09-07 14:09:48

标签: php web-applications ftp filezilla

我正在开发我的第一个网站,当我更新文件(将最新版本上传到服务器)时,例如样式表或.php文件,我尝试加载在上传/更改中途的页面,我得到一个空白屏幕或破碎的CSS。有时必须清除缓存才能加载正确的样式表。

在向用户推送更新时,如何防止这种情况发生?

4 个答案:

答案 0 :(得分:7)

执行此操作的一种方法是使用"缓存清除"。每当您对.css.js文件进行更改时,都会重命名该文件。

style_v1.0.css // Release 1.0
style_v1.1.css // Release 1.1
style_v2.0.css // Release 2.0

或者在文件名后执行:

style.css?v=1.0 // Release 1.0
style.css?v=1.1 // Release 1.1
style.css?v=2.0 // Release 2.0

答案 1 :(得分:0)

关于.php文件更新,用户应该只从更新的文件中接收新的响应。 关于CSS,我建议通过jQuery尝试一些JavaScript。

无论哪种方式,最好不要在网站的实时版本上工作,而是在"沙盒"它的副本保存在本地计算机或服务器上的其他文件夹中,并且在您获得所需功能后,在晚上或当您的网站流量最小时上传文件。

答案 2 :(得分:0)

我们都去过那里并做到了这一点。虽然这个问题可能不适合Stack Overflow,但它有可能留在这里,其他人也会找到它。考虑到这一点,这里是我使用的示例工作流程和一些提示:

一般提示

  • 永远不会永远在网站上工作。始终使用WAMP,MAMP,LAMP或类似的
  • 进行备份并在您的计算机上进行本地设置
  • 设置源代码管理。那里有很多提供商可以为您提供免费帐户供您使用。
  • 了解.git和分支
  • 不要使用FTP。它充满了问题
  • SSH到您的服务器。如果您不确定自己在做什么,请阅读一些教程。

工作流

我在网站上工作时的典型工作流程如下:

  1. 从.git
  2. 克隆回购
  3. 在本地设置网站
  4. 更改文件,网站
  5. 将这些更改提交回源代码管理并推送到develop分支。
  6. 在开发代码上运行一些测试(selenium /类似)
  7. 如果这些测试通过,请通过执行git merge develop --no-ff -m "message"
  8. 将开发分支合并到主分支
  9. 设置webhook以将代码推送到您的服务器/实时/制作网站。
  10. 只有在以下两个时刻都推动生产:
    • 访客处于低点(即夜晚)
    • 当你有足够的时间来解决问题时
  11. 如果在推送到Production时出现任何问题,请回滚到上一版本并找出问题所在。

答案 3 :(得分:0)

您还可以在文件名后附加时间戳,以便每次刷新时获得唯一文件

<script src="../assets/js/header.js?rndstr=<?php echo getCurrentTimeStamp();?>"></script>


function getCurrentTimeStamp(){
    return date('Y-m-d G:i:s');
}