网站建设时无论是从代码安全,数据安全还是用户操作的容错性考虑,回退功能应该从网站建设一开始就考虑,避免突发情况下可以迅速恢复网站。下面列出了要具备回退功能需要注意的几个关键点。是的,回退功能的主要难点在于数据库,通过仔细检查网站,一一排除那些明显的问题,然后坚持几个简单的原则,所有网站建设团队都能够设计完善的回退功能。
保证数据库修改只能是增量的。在下一个废除了列之间的依赖关系的版本发布之前,只能添加数据库的列或表,不能直接删除。一旦实施了这些标准,每个版本都应该有一部分代码专门用于清除上一个版本遗留的对于数据。
DDL和DML必须脚本化且测试过,这个可以在网站建设的后期修改。每个版本中对数据库的修改必须通过脚本实现,而不能手段进行。其中应该包括回退脚本。这样做的原因有两点:1. 网站建设团队需要在QA或某个阶段测试回退操作,以便验证什么都没有被漏掉;2. 需要在一定的负载的条件下测试脚本,确保在网站程序使用数据库时,它仍然能够执行。
对网站中的SQL查询进行约束。网站建设团队需要消除所有SQL语句中的歧义,删除所有Select *查询,并且给update语句加上要更新的列名字。
较大型网站建设项目中要合理使用缓存,正确设置响应头中的缓存参数。客户端缓存可以在网站出现故障时让大部分曾经访问过网站的用户从缓存中正常访问部分重要信息,不至于直接出现错误页面。客户端缓存主要由http响应头中的Cache-Control,Last-Modified和Expires参数实现,下面是被正确设置缓存的网站响应头,其中红色字体部分是缓存的关键参数,确保你的网站返回的http头部正确包含了这些内容,剩下的就交给浏览器去完成吧。
Request URL:/
Cache-Control:private
Content-Encoding:gzip
Content-Length:22146
Content-Type:text/html;charset=utf-8
Date:Mon, 04 Nov 201308:25:36 GMT
Cache-Control:max-age=0
Expires:Mon, 04 Nov 2013 20:00:00GMT
Connection:keep-alive
PoweredBy:cloudfun
Vary:Accept-Encoding
数据的语义修改。在发布版本中,网站建设团队不能修改数据的定义。举个例子,票务表中的一列用于存放状态信号,其中有三个值assigned,fixed和closed。在网站的新版本中,如果没有发布处理新状态的代码,就不能添加第四个状态。
网站建设中注重架构设计,尽量做到热插拔,即Wire on/wire off。应该让网站结构化,使其能根据外部配置,让有些用户能够访问某个代码路径和功能,而有的用户则不能访问。这种设置可以存放在配置文件中,也可以存放在数据库表中,既能够根据角色赋予的访问权限,也能够根据随机百分比分配权限。有了这种结构,就能够让有限的用户对新功能进行测试,而且能够迅速地删除主要bug的代码路径,从而不必回退整个代码。
即使以后和其他团队一起工作,我们也要这样要求自己。可见,这些原则并不复杂,而是相当简单,任何团队多能够应用它们,都能具备回退的功能。
整理并转载自:乐云网站建设【http://www.lywebs.com/news/3747.html】