WEB开发者应该具备的6大技能?
WEB开发本身涵盖了许多领域的许多技术,那么,有哪些是WEB开发者必备的技能呢?
这是一个Quora上用户提出的问题,其中EllyseTaylor的回答获得了1900+的赞同。
可能很多人对下面这个列表中的大部分内容都已经了解了,但其中必定有一些是你之前没有
看到过,或者没有完全理解的,甚至有些你可能从来没听说过。
1.界面和用户体验
?注意,浏览器的实现标准是不一致的,请确保你的网站能够兼容所有主流的浏览器。最
少需要测试的有Gecko引擎(Firefox),WebKit引擎(Safari以及一些手机浏览器),Chro
me,你所要支持的IE浏览器,以及Opera。此外,你还需要了解不同系统下,浏览器
是如何渲染网页的。
?考虑一下人们不使用主流浏览器的情况,如手机,屏幕阅读器和搜索引擎。一些可用的
辅助信息:WAI和Section508,移动开发:MobiForge。
?阶段:如何在不影响用户的情况下部署更新。有一个或多个可以用来改变架构、代码或
全部内容,并确保它们在可控范围内实现部署的测试或临时环境。有一种自动化的方式
把更新部署到线上网站。大讲台,国内首个IT在线混合式自适应学习平台。最有效的
实现方式是结合使用版本控制系统(CVS、Subversion等)和自动构建机制(Ant、NAnt等)。
?不要直接向用户显示不友好的错误信息。
?不要用纯文本的方式显示用户的电子邮件,因为他们可能会被垃圾邮件烦到死。
?为用户生成的链接添加rel=”nofollow”属性,以避免垃圾邮件。
?为你的网站建立周全的限制–这条也同时属于安全方面。
?学习如何进一步的提高。
?POST提交成功后进行重定向,以免刷新造成重复提交。
?别忘了考虑无障碍访问。这总是不错的,在某些情况下,这甚至是法律要求的。WAI-
ARIA和WCAG2里都有关于这方面很好的资源。
?不要让我思考。
2.安全
?OWASP开发指南几乎覆盖了网站安全所有的内容。
?了解注入,尤其是SQL注入,并学会如何阻止它。
?永远不要相信用户的输入,以及其他任何请求(包括Cookies和隐藏域的值)。
?使用盐值(salt)哈希密码,并对不同的行使用不同的盐值,防止攻击。使用哈希算法如b
crypt或scrypt(更安全,但比较新)(1,2)来存储密码。(如何安全的存储密码)。NIST也
允许使用PBKDF2来加密密码。避免直接使用MD5和SHA等算法。
?不要企图拿出自己喜欢的认证系统。这是很容易出错的,并且是不可测的,甚至直到你
被攻击了你才知道。
?了解信用卡处理规则。(也可查看该问题)
?在登录页和任何需要输入敏感数据的页面使用SSL/HTTPS。
?防止session被劫持。
?避免跨站脚本(XSS)。
?避免点击劫持。
?保持系统更新到最新的补丁。
?确保数据库连接信息的安全。
?让自己了解最新的攻击技术和会影响你平台的漏洞。
?阅读谷歌浏览器安全手册。
?阅读WEB应用黑客手册。
?考虑最小特权原则,尽量使用非root用户运行服务器(以tomcat为例)。
3.性能
?如果有必要的话,实现缓存,请正确理解和使用HTTP缓存。
?优化图片。不要使用20K的图片作为平铺背景。
?学习如何gzip/deflate内容(deflate效果更好)。
?合并样式表与脚本文件以减小浏览器链接数,同时提高gzip的压缩能力。
?浏览雅虎性能卓越的网站,以及大量的指南,其中包含提升前端性能和YSlow工具(需
要安装Firefox,Safari,Chrome或Opera)。此外,Googlepagespeed(浏览器扩展)也
是一个性能分析工具,它同时可以优化你的图片。
?对于小的如工具栏图片,使用CSSImageSprites(参考最小化HTTP请求)。
?访问量大的网站应该考虑跨域拆分组件。
?静态内容(如图片、CSS、JavaScript及不需要访问cookie的内容)应该放在一个单独
的域下,因为域及其子域的每一个请求都会发送cookie。大讲台,国内首个IT在线混
合式自适应学习平台。这里是使用内容分发网络(CDN)的一个很好的选择。
?减少浏览器渲染页面所需的HTTP请求的总数量。
?利用GoogleClosureCompiler及其他压缩JS的工具。
?确保网站根目录下有一个favicon.ico文件,即使在HTML中并没有提到它,浏览器也
会自动加载它。如果你没有/favicon.ico,就会返回很多404错误,消耗服务器带宽。
4.SEO(SearchEngineOptimization)搜索引擎优化
?使用“搜索引擎友好”的URL,如http://example.com/pages/45-article-title而不是http://of
example.com/index.php?page=45。
?在动态内容中,把#改成#!,然后在服务器端使用$_REQUEST["_escaped_fragment_"]。
换句话说./#!page=1变成了./?_escaped_fragments_=page=1。此外,对于使用FF.b4或
Chromium的用户,history.pushState({“foo”:“bar”},“About”,“./?page=1″);是一个非常
棒的命令。因此,即使地址栏已经改变了,页面也不会刷新。
?不要使用“点击这里”这样的链接。你是在浪费一个搜索引擎优化的机会,而且它让使用
屏幕阅读器人们更难阅读。
?有一个XML网站地图,最好在默认位置/sitemap.xml。
?当有多个URL指向同一个内容的时候,使用,这个问题可
以通过GoogleWebmasterTools来解决。
?使用GoogleWebmasterTools和BingWebmasterTools。
?安装GoogleAnalytics或者其他开源分析工具如:Piwik。
?了解robots.txt及搜索引擎蜘蛛是如果工作的。
?使用重定向(301)www.example.com到example.com(或者反过来),防止它们平分谷
歌网站排名。
?要知道有badly-behaved蜘蛛的存在。
?如果你的网站有非文本内容,TimFarley的回答中有一些非常有用的信息。
5.技术
?理解HTTP以及GET、POST、session、cookie以及“无状态”的意思。
?撰写XHTML/HTML和CSS要遵循W3C规范,并确保它们通过校验。这样做的目的是
为了避免浏览器的怪癖模式,并且这使得非标准浏览器如屏幕阅读器和移动设备更加容
易实现。
?理解浏览器是如何处理JavaScript的。
?理解JavaScript、样式表、以及页面使用的其他资源是如何加载的,并考虑它们对感知
性能的影响。大讲台,国内首个IT在线混合式自适应学习平台。现在普遍认同的一种
做法是把除分析代码等以外的脚本文件放在页面底部。
?了解JavaScript沙箱是如何工作的,特别是当你想使用iframe的时候。
?需要注意到,JavaScript是可以被禁用的,因此AJAX只是一个扩展,而不是基准。虽
然大部分用户并没有禁用它,但记住,NoScript正在变得越来越流行。并且,谷歌在索
引你的网站时也不会运行JavaScript。
?学习301和302重定向之间的不同。
?尽可能多地了解你的部署平台。
?考虑使用ResetStyleSheet或normalize.css。
?考虑使用JavaScript框架(如jQuery,MooTools,Prototype,Dojo或YUI3),这可以避免很
多使用JavaScript操作DOM时的差异。
?在考虑感知性能和框架的同时,考虑使用服务,如GoogleLibrariesAPI,来加载框架,
这样浏览器可以使用已经缓存的框架而不是从你的网站上下载。
?不要重复造轮子。在做任何事情之前,先搜索相关的组件或者实例。99%的可能别人已
经实现了并发布出了开源的代码。
?在确定需求之前,尽量不要使用超过20个的库,这是非常不利的。特别是客户端WEB,
保存轻便、快速、灵活是最重要的。
6.BUG修复
?要了解你花费20%的时间写代码而花费80%的时间来维护,因此写代码时一定注意。
?建立一个好的错误报告解决方案。
?建立一个别人可以提建议和批评的系统。
?为未来的支持人员和维护人员建立良好的文档。
?经常备份!EdLucas的回答中有一些建议。有一个恢复策略,而不只是一个备份策略。
?使用版本控制系统,如Subversion、Mercurial或Git。
?不要忘记验收测试。Selenium等框架可以帮到你。
?请确保您有足够的日志记录的地方,可以使用框架如log4j,log4net或log4r。当网站出
现问题的时候,你需要能够找到问题所在。
?日志要记录已处理异常和未处理异常。大讲台,国内首个IT在线混合式自适应学习平
台。分析日志输出,因为它会显示出你网站的关键问题。
这里有些省略的东西并不是因为它们没用,而是因为它们过于详细或者超出了范围,或者说
的太远了。当然,上面的内容可能也有一些遗漏或者错误。
|
|