一、界面和用户体验(Interface and User Experience)
1.1
知道各大浏览器执行Web标准的情况,保证你的站点在主要浏览器上都能正常运行。你至少要测试以下引擎:Gecko(用于Firefox)、Webkit(用于Safari、Chrome和一些手机浏览器)、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 caching与HTML5离线储存。
这里说的缓存是客户端缓存!当发现内容未更新时从本地读取!可加快显示速度,可节省宽带!
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/HTML和CSS符合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框架(比如jQuery、MooTools、Prototype),它们可以使你不用考虑浏览器之间的差异。
在了解和理解JS基础上使用通用JS框架,可使各个浏览器JS兼容简单化!
六、解决bug
6.1
理解程序员20%的时间用于编码,80%的时间用于维护,根据这一点相应安排时间。
在设计和编程时就应当考虑维护!
6.2
建立一个有效的错误报告机制。
要有错误日志!
6.3
建立某些途径或系统,让用户可以与你接触,向你提出建议和批评。
用户反馈,论坛,博客,留言板,微博等。。。
6.4
为将来的维护和客服人员撰写文档,解释清楚系统是怎么运行的。
帮助系统
6.5
经常备份!(并且确保这些备份是有效的。)除了备份机制,你还必须有一个恢复机制。
完整的备份机制,包括程序,数据库,资源等
6.6
使用某种版本控制系统储存你的文件,比如Subversion或Git。
程序要有版本控制。
6.7
不要忘记做单元测试(Unit Testing),Selenium之类的框架会对你有用。
单元测试!要做到勤发布!快速处理BUG。
PS:网站优化是个很复杂的过程,需要平时的积累和实践!通过上面的分析发现还有很多要加强的地方!真是学海无涯!
欢迎转载,转载请注明:转载自[ http://www.cnblogs.com/zjfree/ ]