javascript - 已上线的网站,如果修改了原型,需要修改代码该怎么办?
大家讲道理
大家讲道理 2017-04-11 12:00:56
0
4
400

面试被问到一个问题:如果一个网站已上线,临时修改了原型,需要改页面的逻辑、布局或图片等,不让用户察觉。这时该怎么做?

我当时想:应该是将部分代码修改后在服务器上覆盖原来的代码。但是感觉没那么简单没敢说。(是不是类似“热更新”之类的东西,还是就是我想多了,就只是修改部分代码覆盖原文件就好了?)

请问大神,实际是该怎么做呢?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all(4)
刘奇

按照你的描述这个所谓的用户察觉分两种:
1.我修改了前端代码,页面逻辑,布局,发布代码,想让用户无感知,这个是不可能的,因为你连布局都动了,用户又不是瞎子怎么可能无感知,那什么时候用户无感知呢,那就是用户,这个瞎不是说用户真的瞎,还是说再用户看不见的地方,我们做了修改,比如页面业务逻辑,ajax请求,等,这些作为一个用户是感受不到的。
2.我发布代码可能会导致服务器停止服务,这个时候用户访问发现访问不了。这也是不让用户察觉的一种,对于前端页面而言好说,直接丢上去,不用重启。但是对于后端代码需要重启中间件,这是需要一个过程,小的项目大约十几二十秒,大的项目可能一分钟。那么对于用户而言,这个是不能接受的,因为等用户发现你服务器挂了的时候,他可能就会放弃你。建议,开集群,逐一发布。即,我有两个服务器在提供访问服务,如果我要更新,那么我先挺了一台把这台发布好,然后再去整另外一台,这种无缝发布,用户才是无感知的。

Peter_Zhu

楼上说的第二条正确,如果要保证不宕机,用户能够正常使用,那么就是停一部分服务器,然后在这些服务器上部署新代码,然后发布这些服务器。然后再停另外的服务器,进行更新。

我再多说几句,除了你说的这种不让用户体验宕机的功能,一些公司为了避免晚上发布新功能,而导致所有程序员都要加班。就会采用这种方法,先在非线上服务器上面部署完毕,测试完毕,然后定个时间自动切换服务器。

不过,需要多注意一点的是,注意给静态文件添加tag信息,避免用户浏览器缓存导致页面或者功能无法及时更新。

小葫芦

谢邀,1楼已经回答了。对于小用户量,单一服务器的小网站,尽量选择用户访问量少的时候(凌晨两三点什么的)更新;对于大型的网站,现在他们都有服务器集群,可以部分更新,部分正常运行,这样交替全部更新完毕,但是这就涉及的不是前端开发的知识了,我也是道听途说。

迷茫

js,图片扔到cdn上,对应的文件重新上传就行了。这样是代价比较小的。你的网站的服务器正常运行,不会出现错误码,对应的资源更改。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!