84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
面试被问到一个问题:如果一个网站已上线,临时修改了原型,需要改页面的逻辑、布局或图片等,不让用户察觉。这时该怎么做?
我当时想:应该是将部分代码修改后在服务器上覆盖原来的代码。但是感觉没那么简单没敢说。(是不是类似“热更新”之类的东西,还是就是我想多了,就只是修改部分代码覆盖原文件就好了?)
请问大神,实际是该怎么做呢?
光阴似箭催人老,日月如移越少年。
按照你的描述这个所谓的用户察觉分两种: 1.我修改了前端代码,页面逻辑,布局,发布代码,想让用户无感知,这个是不可能的,因为你连布局都动了,用户又不是瞎子怎么可能无感知,那什么时候用户无感知呢,那就是用户瞎,这个瞎不是说用户真的瞎,还是说再用户看不见的地方,我们做了修改,比如页面业务逻辑,ajax请求,等,这些作为一个用户是感受不到的。 2.我发布代码可能会导致服务器停止服务,这个时候用户访问发现访问不了。这也是不让用户察觉的一种,对于前端页面而言好说,直接丢上去,不用重启。但是对于后端代码需要重启中间件,这是需要一个过程,小的项目大约十几二十秒,大的项目可能一分钟。那么对于用户而言,这个是不能接受的,因为等用户发现你服务器挂了的时候,他可能就会放弃你。建议,开集群,逐一发布。即,我有两个服务器在提供访问服务,如果我要更新,那么我先挺了一台把这台发布好,然后再去整另外一台,这种无缝发布,用户才是无感知的。
瞎
楼上说的第二条正确,如果要保证不宕机,用户能够正常使用,那么就是停一部分服务器,然后在这些服务器上部署新代码,然后发布这些服务器。然后再停另外的服务器,进行更新。
我再多说几句,除了你说的这种不让用户体验宕机的功能,一些公司为了避免晚上发布新功能,而导致所有程序员都要加班。就会采用这种方法,先在非线上服务器上面部署完毕,测试完毕,然后定个时间自动切换服务器。
不过,需要多注意一点的是,注意给静态文件添加tag信息,避免用户浏览器缓存导致页面或者功能无法及时更新。
tag
谢邀,1楼已经回答了。对于小用户量,单一服务器的小网站,尽量选择用户访问量少的时候(凌晨两三点什么的)更新;对于大型的网站,现在他们都有服务器集群,可以部分更新,部分正常运行,这样交替全部更新完毕,但是这就涉及的不是前端开发的知识了,我也是道听途说。
js,图片扔到cdn上,对应的文件重新上传就行了。这样是代价比较小的。你的网站的服务器正常运行,不会出现错误码,对应的资源更改。
按照你的描述这个所谓的用户察觉分两种:
1.我修改了前端代码,页面逻辑,布局,发布代码,想让用户无感知,这个是不可能的,因为你连布局都动了,用户又不是瞎子怎么可能无感知,那什么时候用户无感知呢,那就是用户
瞎
,这个瞎不是说用户真的瞎,还是说再用户看不见的地方,我们做了修改,比如页面业务逻辑,ajax请求,等,这些作为一个用户是感受不到的。2.我发布代码可能会导致服务器停止服务,这个时候用户访问发现访问不了。这也是不让用户察觉的一种,对于前端页面而言好说,直接丢上去,不用重启。但是对于后端代码需要重启中间件,这是需要一个过程,小的项目大约十几二十秒,大的项目可能一分钟。那么对于用户而言,这个是不能接受的,因为等用户发现你服务器挂了的时候,他可能就会放弃你。建议,开集群,逐一发布。即,我有两个服务器在提供访问服务,如果我要更新,那么我先挺了一台把这台发布好,然后再去整另外一台,这种无缝发布,用户才是无感知的。
楼上说的第二条正确,如果要保证不宕机,用户能够正常使用,那么就是停一部分服务器,然后在这些服务器上部署新代码,然后发布这些服务器。然后再停另外的服务器,进行更新。
我再多说几句,除了你说的这种不让用户体验宕机的功能,一些公司为了避免晚上发布新功能,而导致所有程序员都要加班。就会采用这种方法,先在非线上服务器上面部署完毕,测试完毕,然后定个时间自动切换服务器。
不过,需要多注意一点的是,注意给静态文件添加
tag
信息,避免用户浏览器缓存导致页面或者功能无法及时更新。谢邀,1楼已经回答了。对于小用户量,单一服务器的小网站,尽量选择用户访问量少的时候(凌晨两三点什么的)更新;对于大型的网站,现在他们都有服务器集群,可以部分更新,部分正常运行,这样交替全部更新完毕,但是这就涉及的不是前端开发的知识了,我也是道听途说。
js,图片扔到cdn上,对应的文件重新上传就行了。这样是代价比较小的。你的网站的服务器正常运行,不会出现错误码,对应的资源更改。