《网站开发人员应该知道的61件事》[解读]

看了阮一峰翻译的《 网站开发人员应该知道的61件事》,特将我的理解及分析记录如下:
如有错误或遗漏欢迎批评指正! 解读部分使用绿色字体。

一、界面和用户体验(Interface and User Experience)

1.1

知道各大浏览器执行Web标准的情况,保证你的站点在主要浏览器上都能正常运行。你至少要测试以下引擎:Gecko(用于Firefox)、Webkit(用于SafariChrome和一些手机浏览器)、IE(你可以利用微软发布的Application Compatibility VPC Images进行测试)和Opera。同时,不同的操作系统,可能也会影响浏览器如何呈现你的网站。

在国内IE6的份额还是很高的!如果做的是通用网站还是要考虑兼容IE6的。
我认为的兼容顺序应为:IE6、IE7、IE8、Firefox、Chrome
对于遨游、360、QQ浏览器等国产浏览器,因为他们一般都是给IE套了个壳子,所以兼容了IE它们应当没问题!

1.2

除了浏览器,网站还有其他使用方式:手机、屏幕朗读器、搜索引擎等等。你应该知道在这些情况下,你的网站的运行状况。MobiForge提供了手机网站开发的一些相关知识。

对于浏览终端!现在手机互联网已经很普遍了,并且也是发展的趋势!如有必要应当开辟网站的手机版!但要注意手机浏览器的限制。
屏幕朗读器,应避免将大段或关键文字放入图片。
搜索引擎,如果SEO做的好的,搜索引擎就会给网站带来不少流量!可以参考 谷歌搜索引擎优化初学者指南 (HTML版) 中的内容!
应考虑浏览者屏幕分辨率、色彩(256色 等)、网速等!

1.3

知道如何在基本不影响用户使用的情况下升级网站。通常来说,你必须有版本控制系统(CVS、Subversion、Git等等)和数据备份机制(backup)。

网站发布更新应选择在用户浏览量少的时候!最好有升级日志,告知用户修改了什么!
版本控制,如发现本次发布有问题,可及时更换回原来版本!因为外网环境毕竟还是和开发环境有差异!
在更新之前应备份必要数据,以方便恢复!数据备份是为应对灾难事故的!非常重要!应有完善的数据备份策略(定时备份、异地备份等)!

1.4

不要让用户看到那些不友好的出错提示。

定制自己404页!尽量告知用户为什么引起了此错误!最好提出解决办法!
提供错误反馈功能!
不要向用户展示程序错误信息!应翻译成用户可以理解的语言!

1.5

不要直接显示用户的Email地址,至少不要用纯文本显示。

对于用户登录自己账户后,可看到文字格式的隐私数据(账户名、编号、Email、手机号等等)!
但对于用户共享的公共数据(Email、手机号、QQ号等通用联系方式)应使用图片(可考虑扭曲图片中文字,类似验证码)表示!
因为现在网上有自动收集用户隐私信息的程序!提供图片格式,可使这些自动获取程序失效(至少是增加获取难度)!

1.6

为你的网站设置一些合理的使用限制,一旦超过门槛值,就自动停止服务。(这也与网站安全相关。)

限制自动提交程序!
根据带宽及处理能力,限制最大可访问用户数!
限制恶意访问、抓取等!
根据业务限制输入的值!使其在合理范围!
超出限制应给出提示!

1.7

知道如何实现网页的渐进式增强(progressive enhancement)。

基本内容应在主流的所有浏览器可用!
基本功能应在主流的所有浏览器可用!
对于高级浏览器特性,使用时只是辅助,但不可影响业务内容和功能!
对于浏览者可差异对待,但主要业务应都支持!
不应将非主流特性作为业务必要条件!
尊重用户偏好(就是喜欢IE6 汗)!

1.8

用户发出POST请求后,总是将其重导向(redirect)至另外一个网页。

提交结果应转到下一页面!结构清晰!
可避免如asp.net如在本页面,如未转到另一页,则用户刷新后会提示重复提交!

1.9

不要忘记网站的可访问性(accessibility,即残疾人如何使用网站)。对于美国网站来说,有时这是法定要求WAI-ARIA有一些这方面很好的参考资料。

考虑视力有障碍用户!(老年人、色盲等)
考虑听力有障碍用户!(考虑屏幕阅读器)

二、安全性(Security

2.1

阅读《OWASP开发指南》,它提供了全面的网站安全指导。

2010 年版的OWASP Top 10
web 应用程序在企业使用中10 项最严重的风险:
A1: 注入
A2: 跨站脚本 (XSS)
A3: 失效的认证和会话管理
A4: 不安全的直接对象引用
A5: 跨站请求伪造 (CSRF)
A6: 安全配置错误
A7: 不安全的密码储藏
A8: 限制URL 访问失败
A9: 传输层保护不足
A10: 尚未认证的重定向和转发

2.2

了解SQL注入(SQL injection)及其预防方法。

防止SQL注入!将客户端所有输入参数化!
过滤SQL关键字及符号!
对输入内容编码!

2.3

永远不要信任用户提交的数据(cookie也是用户端提交的!)。

需要类型检测!需要在服务器端重复验证用户输入!前端JS验证用户是可以跳过的!

2.4

不要明文(plain-text)储存用户的密码,要hash处理后再储存。

不要明文存储密码!对密码进行MD5加密后存储!不要明文传输密码!
防止内部管理员从数据库中直接获取用户密码!

2.5

不要对你的用户认证系统太自信,它可能很容易就被攻破,而你事先根本没意识到存在相关漏洞。

没有绝对安全!技术在进步,时刻保持警惕!

2.6

了解如何处理信用卡

信用卡处理,这个应当不要明文存储信用卡信息,并且不要存储用户信用卡信息!如卡号等!
在任何地方不要明文显示完整信用卡卡号!

2.7

在登录页面及其他处理敏感信息的页面,使用SSL/HTTPS

使用安全的HTTP连接! https中文资料 SSL中文资料

2.8

知道如何对付session劫持(session hijacking)。

Session劫持原理简介:http://hi.baidu.com/liamxd/blog/item/acbe71d0e764aada562c8477.html

2.9

避免"跨站点执行"(cross site scripting,XSS)。

XSS(跨站)攻击资料:http://www4.it168.com/jtzt/shenlan/safe/xss/

2.10

避免"跨域伪造请求"(cross site request forgeries,XSRF)。

CSRF | XSRF 跨站请求伪造: http://www.cnblogs.com/lsk/archive/2008/05/26/1207467.html

2.11

及时打上补丁,让你的系统始终跟上最新版本。

及时更新服务器和软件补丁!避免黑客利用未修补漏洞实施攻击!

2.12

确认你的数据库连接信息的安全性。

删除不用的数据库用户!
使用强密码!
保证数据库服务器的安全:http://www.microsoft.com/china/technet/security/guidance/secmod91.mspx

2.13

跟踪攻击技术的最新发展,以及你使用的平台的最新安全漏洞。

只有知己知彼,方可百战百胜!

2.14

阅读Google的《浏览器安全手册》(Browser Security Handbook)。

这个是英文的!没看过!

2.15

阅读《网络软件的黑客手册》(The Web Application Hackers Handbook)。

这个是英文的!没看过!

三、性能(Performance)

3.1

只要有可能,就使用缓存(caching)。正确理解和使用HTTP cachingHTML5离线储存

这里说的缓存是客户端缓存!当发现内容未更新时从本地读取!可加快显示速度,可节省宽带!
HTML5离线存储:http://www.w3school.com.cn/html5/html_5_webstorage.asp

3.2

优化图片。不要把一个20KB的图片文件,作为重复出现的网页背景图案。

20KB的大图片当背景,并且还重复排列,则会占用很大的浏览器内存!降低浏览器效率!
应尽量避免使用大图片!图片占用宽带,并且消耗内存!

3.3

学习如何用gzip/deflate压缩内容(deflate方式更可取)。

gzip压缩,是在服务器端把文本压缩,传输到客户端再解压,这样会节省大量宽带!

3.4

将多个样式表文件或脚本文件,合为一个文件,这样可以减少浏览器的http请求数,以及减小gzip压缩后的文件总体积。

http请求数越少网页加载越快!

3.5

浏览Yahoo的Exceptional Performance网站,里面有大量提升前端性能的优秀建议,还有他们的YSlow工具。Google的page speed则是另一个用来分析网页性能的工具。两者都要求安装Firebug

加快您的网站最佳做法
尽量减少HTTP请求
使用CDN
添加Expires和Cache - Control头
GZIP压缩
把样式表放在顶部
把脚本放在底部
避免CSS表达式
使用外部JavaScript和CSS
减少DNS查找
压缩Javascipt和CSS
避免重定向
删除重复的脚本引用
配置ETags
优化AJAX
使用flush
为AJAX请求使用GET
延迟加载资源
预加载资源
减少DOM元素数量
跨域最大化并行下载
少用iframe
警惕404!当自定义404后,如果外部JS引用的资源不存在。则将终止JS运行!
减小COOKIE大小
静态内容存储在不同域,以避免COOKIE传递!
减少DOM操作!
减少DOM的事件
不要使用@import
避免使用IE滤镜!必须使用时限制浏览器!
优化图片
使用CSS精灵
指定图片宽高,不要缩放图片
优化favicon.ico,缓存
iphone不缓存大于25K的资源,保证资源不大于25K
不要将图片的SRC设置为空!

3.6

如果你的网页用到大量的小体积图片(比如工具栏),就应该使用CSS Image Sprite,目的是减少http请求数。

使用CSS精灵减少HTTP请求!

3.7

大流量的网站应该考虑将网页对象分散在多个域名(split components across domains)。

使静态资源可并行下载!

3.8

静态内容(比如图片、CSS、JavaScript、以及其他cookie无关的网页内容)都应该放在一个不需要使用cookie的独立域名之上。因为域名之下如果有cookie,那么客户端向该域名发出的每次http请求,都会附上cookie内容。这里的一个好方法就是使用"内容分发网络"(Content Delivery Network,CDN)。

静态资源放独立域名可防止COOKIE传递!

3.9

将浏览器完成网页渲染所需要的http请求数最小化。

http请求最小化,合并JS、css文件、使用CSS精灵等。

3.10

使用Google的Closure Compiler压缩JavaScript文件,YUI Compressor亦可。

对js、CSS进行压缩 JS CSS 压缩工具(GUI界面)

3.11

确保网站根目录下有favicon.ico文件,因为即使网页中根本不包括这个文件,浏览器也会自动发出对它的请求。所以如果这个文件不存在,就会产生大量的404错误,消耗光你的服务器的带宽。

好恐怖!这个第一次听说!favicon.ico文件最好在1K之内,并将他设置为永久缓存!

四、搜索引擎优化(Search Engine Optimization,SEO)

4.1

使用"搜索引擎友好"的URL形式,比如example.com/pages/45-article-title,而不是example.com/index.php?page=45。

这个说的有点问题,园友已经指正!其实只要你给URL起的名字好理解就好!尽量使用短的URL。

4.2

不要使用"点击这里"之类的超级链接,因为这样等于浪费了一个SEO机会,而且降低了"屏幕朗读器"(screen reader)的使用效果。

并且不要连接里是个图片!这样也不好。

4.3

创建一个XML sitemap文件,它的缺省位置一般是/sitemap.xml(即放在网站根目录下)。

方便搜索引擎抓取!但要记得及时更新站点地图文件!

4.4

当你有多个URL指向同一个内容时,在网页代码中使用<link rel="canonical" ... />

中文资料:http://www.google.com/support/webmasters/bin/answer.py?hl=cn&answer=139394

4.5

使用Google的Webmaster Tools和Yahoo的Site Explorer

站长分析工具,帮助你分析SEO的问题!

4.6

从一开始就使用Google Analytics(或者开源的访问量分析工具Piwik)。

访问统计,了解网站的访问情况!

4.7

知道robots.txt的作用,以及搜索引擎蜘蛛的工作原理。

告诉搜索引擎蜘蛛可以读取什么内容。

4.8

将www.example.com的访问请求导向example.com(使用301 Moved Permanently重定向),或者采用相反的做法,目的是防止Google把它们当做两个网站,分开计算排名。

多个域名时很有用!

4.9

知道存在着恶意或行为不正当的网络蜘蛛。

存在恶意蜘蛛,所以不要全靠robots.txt。
防止竞争者自动爬取你的数据!

4.10

如果你的网站有非文本的内容(比如视频、音频等等),你应该参考Google的sitemap扩展协议

这个不清楚!

五、技术(Technology)

5.1

理解HTTP协议,以及诸如GET、POST、sessions、cookies之类的概念,包括"无状态"(stateless)是什么意思。

理解这些概念,可以更好的配置和优化你的网站。

5.2

确保你的XHTML/HTMLCSS符合W3C标准,使得它们能够通过检验。这可以使你的网页避免触发浏览器的古怪行为(quirk),而且使它在"屏幕朗读器"和手机上也能正常工作。

尽量符合标准规范!

5.3

理解浏览器如何处理JavaScript脚本。

这个还不理解!

5.4

理解网页上的JavaScript文件、样式表文件和其他资源是如何装载及运行的,考虑它们对页面性能有何影响。在某些情况下,可能应该将脚本文件放置在网页的尾部

有待了解!

5.5

理解JavaScript沙箱(Javascript sandbox)的工作原理,尤其是如果你打算使用iframe。

有待了解!

5.6

知道JavaScript可能无法使用或被禁用,以及Ajax并不是一定会运行。记住,"不允许脚本运行"(NoScript)正在某些用户中变得流行,手机浏览器对脚本的支持千差万别,而Google索引网页时不运行大部分的脚本文件。

现在不允许脚本只能,估计什么网站都浏览不了吧。如果不支持脚本运行,最好给用户提示!

5.7

了解301重定向和302重定向之间的区别(这也是一个SEO相关问题)。

有待了解!

5.8

尽可能多得了解你的部署平台(deployment platform)。

了解IIS。

5.9

考虑使用样式表重置(Reset Style Sheet)。

消除各个浏览器对CSS的差异!

5.10

考虑使用JavaScript框架(比如jQueryMooToolsPrototype),它们可以使你不用考虑浏览器之间的差异。

在了解和理解JS基础上使用通用JS框架,可使各个浏览器JS兼容简单化!

六、解决bug

6.1

理解程序员20%的时间用于编码,80%的时间用于维护,根据这一点相应安排时间。

在设计和编程时就应当考虑维护!

6.2

建立一个有效的错误报告机制。

要有错误日志!

6.3

建立某些途径或系统,让用户可以与你接触,向你提出建议和批评。

用户反馈,论坛,博客,留言板,微博等。。。

6.4

为将来的维护和客服人员撰写文档,解释清楚系统是怎么运行的。

帮助系统

6.5

经常备份!(并且确保这些备份是有效的。)除了备份机制,你还必须有一个恢复机制。

完整的备份机制,包括程序,数据库,资源等

6.6

使用某种版本控制系统储存你的文件,比如SubversionGit

程序要有版本控制。

6.7

不要忘记做单元测试(Unit Testing),Selenium之类的框架会对你有用。

单元测试!要做到勤发布!快速处理BUG。

 

PS:网站优化是个很复杂的过程,需要平时的积累和实践!通过上面的分析发现还有很多要加强的地方!真是学海无涯!

你可能感兴趣的:(网站开发)