`

《网站开发人员应该知道的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:网站优化是个很复杂的过程,需要平时的积累和实践!通过上面的分析发现还有很多要加强的地方!真是学海无涯!

分享到:
评论

相关推荐

    软件开发项目人员配置参考

    本文档旨在为软件项目管理提供一份详细的人员配置指南,帮助项目管理者(GM)更好地理解不同阶段所需的角色及其数量,从而更高效地组建和管理开发团队。 #### 核心理念 软件开发管理的核心任务在于充分发挥团队...

    华为敏捷开发介绍华为敏捷软件开发解读V101.ppt

    华为敏捷软件开发解读V101.ppt是华为公司的一份关于敏捷开发的介绍文档,旨在提高软件开发管理者和开发人员对敏捷开发的理解和掌握。该文档涵盖了敏捷开发的概述、正确理解敏捷、我司敏捷开发实施策略、我司敏捷案例...

    互联网时代教育类APP开发美国《教育技术开发人员指南》手册解读及启示.pptx

    互联网时代教育类APP开发美国《教育技术开发人员指南》手册解读及启示.pptx

    Delphi 5 Developer’s Guide 开发人员指南

    ### Delphi 5 Developer’s Guide 开发人员指南 #### 标题解读: - **Delphi 5 Developer’s Guide**:本书旨在为使用Delphi 5的开发者提供全面、深入的技术指导,帮助他们掌握该开发环境的各项功能和技术要点。 #...

    华为敏捷软件开发解读V1.01.ppt

    - **开发人员**:所有软件开发相关人员(包括PL、软件开发人员、软件测试人员等)需要深刻理解敏捷理念、掌握敏捷实践,并了解公司敏捷推行策略。全体相关人员需在2010年3月底前通过敏捷考试。 - **考试**:分为管理...

    华为敏捷软件开发解读V1.01

    【华为敏捷软件开发解读V1.01】深入解析了华为在推行敏捷开发中的核心理念、策略和实践,旨在帮助公司的软件开发管理者和相关人员更好地理解和应用敏捷方法,以提升应对需求变化的能力、提高产品质量、提升开发效率...

    华为敏捷开发介绍

    为落实敏捷软件开发在我司的顺利推行,使广大软件开发管理者和开发人员深刻领会敏捷核心理念,熟练掌握敏捷实践方法,从而达到增强应对需求变化的能力、提高产品质量、提升开发效率和缩短交付周期等方面的目标。...

    华为敏捷开发介绍(华为敏捷软件开发解读V1.01).ppt

    此培训文档是H公司为落实敏捷软件开发在我司的顺利推行,使广大软件开发管理者和开发人员深刻领会敏捷核心理念,熟练掌握敏捷实践方法,从而达到增强应对需求变化的能力、提高产品质量、提升开发效率和缩短交付周期...

    普中DSP28335开发攻略,普中dsp28335开发攻略pdf

    《普中DSP28335开发攻略》是一份详细阐述如何使用TI公司的TMS320F28335数字信号处理器(DSP)进行开发的指导文档。该文档面向的是希望掌握这款高性能DSP应用的工程师和技术人员,旨在帮助他们在实际项目中充分利用其...

    软件工程 软件开发成本度量规范、解读及模板.rar

    在软件开发过程中,准确地估算和控制成本是至关重要的。"软件工程 软件开发成本...这个压缩包文件提供的资源是理解和实施成本度量的宝贵工具,无论你是项目管理人员、开发人员还是业务分析师,都应该深入学习和运用。

    华为敏捷软件开发解读 - PSST质量与成本管理部/系统工程部

    2. **软件开发相关人员**,包括PL、开发人员、测试人员、架构人员、系统分析人员等,需深刻理解敏捷理念,掌握敏捷实践,并了解公司敏捷推行策略。 3. **敏捷知识考试**是软件开发相关人员的任职资格要求,试题分为...

    嵌入式开发职业发展解读.docx

    嵌入式开发是IT行业中一个极其重要且富有挑战性的领域,近年来随着移动互联网和物联网的快速发展,其应用范围不断扩大,涵盖了通讯、网络、工业控制、医疗、电子等多个行业。嵌入式设备本质上是微型计算机,由硬件、...

    DevSecOps标准解读.zip

    建立一个安全意识浓厚的文化,鼓励开发人员、测试人员和运维人员一起参与安全决策,有助于提高整体安全性。 3. **安全工具链**:DevSecOps涉及一系列自动化工具,包括代码扫描、静态应用程序安全测试(SAST)、动态...

    生物公司开发人员安全职责精选.doc

    在生物公司的开发团队中,开发人员的安全职责是至关重要的,因为他们的工作直接影响到实验过程、生产环节以及最终产品的安全性。以下是对这些职责的详细解读: 1. **平安预评价与安全措施**:开发人员需要在设计和...

    方正数码开发技术人员背景调查.doc

    文档标题“方正数码开发技术人员背景调查.doc”和描述中提到的是一个关于方正数码公司对开发技术人员的技术背景进行评估的文档。这份文档由技术管理委员会于2001年3月30日制定,目的是为了系统性地了解和评估技术...

    Java Web开发实例大全

    Java Web开发实例大全(提高卷)筛选、汇集了Java Web开发从基础知识到高级应用各个层面的大量实例及源代码,共有600个左右,每个实例及源代码按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析...

    华为系统开发人员标准培训教材

    《华为系统开发人员标准培训教材》是一份专为华为公司内部及合作伙伴的系统开发人员设计的详尽教程,旨在提升开发团队的专业技能和遵循最佳实践。这份教材深度涵盖了多个关键领域,包括编码规范、程序效率、质量保证...

    Oracle PL SQL 开发人员试题(DBA)

    Oracle PL/SQL 开发人员试题(DBA) 本资源是 Oracle PL/SQL 开发人员试题(DBA),涵盖了多个与 Oracle PL/SQL 相关的试题,旨在考察开发人员对 Oracle PL/SQL 的理解和应用能力。以下是对试题的详细解读和知识点总结...

    解读_NET架构核心开发技术

    开发人员可以使用C#、VB.NET等编程语言,利用ASP.NET来构建Web服务,并借助WSDL(Web Services Description Language)和UDDI(Universal Description, Discovery, and Integration)来发布和发现服务。此外,SOAP...

Global site tag (gtag.js) - Google Analytics