一个web开发人员在发布站点前你需要考虑哪些技术细节

转自http://www.xker.com/page/e2014/0520/132486.html

一个web开发人员在发布站点前你需要考虑哪些技术细节

文章转自Hedgehog博客

前日在cnblogs上看到一遍文章《每个程序员都必读的12篇文章》,其中大多数是E文的。

先译其中一篇web相关的”每个程序员必知之WEB开发”。

原文:

http://programmers.stackexchange.com/questions/46716/what-technical-details-should-a-programmer-of-a-web-application-consider-before

问:对于一个web开发人员来说,在发布一个站点之前,他需要处理哪些细节性的问题。假如Jeff Atwood能在站点上忽略了对HttpOnly cookies,sitemaps,和cross-site request forgeries的关注,那我还能忽略些什么呢?

对于一个设计或提供站点内容的人来说,他们总认为站点的可用性及内容总比这个平台重要的多,当然在这个方面,web开发人员没有什么话语权。对于一个web开发人员来说,其更多需要关注的是站点的稳定性,是否表现良好,安全性,是否满足了其他商业目标(例如花费不要太高,构建时间不要太长,在google提供的搜索结果中是否有个良好的排名)。

我们可以从这个角度上讨论这个问题:一个web开发者在可信网络环境下做了些成成果,并且他打算将这个成果部署到当前这个糟糕的互联网环境上。

另外,我也寻找一个更具体的答案而非一个模糊的”web标准”,我的意思是已经了解了HTTP上的HTML、JavaScript、CSS技术,且认为你已经是一个专业的web开发人员。那么,除此之外还有那些标准,在什么环境下使用?为什么?请提供一个链接到标准的规范。

答:以下大部分的观点也许大部分都已知悉,但是其中有少量的观点你获取从来没有看过,别担心,你不必全部理解他们,或许对你来说你永远也不需要了解到他们。

接口设计及用户体验

  1. 你需要知道各种浏览器实现标准不一致,你需要保证你的站点在主流浏览器上能够良好运行。至少需要测试:基于Gecko引擎的浏览器(例如:Firefox),基于Webkit引擎的浏览器(例如Safari和其他一些手机浏览器),Chrome,IE及Opera。同时也需要考虑在不同的操作系统上,各种浏览器如何渲染你的站点。
  2. 考虑你的站点将会被如何使用:是在手机端访问,pc上的浏览器访问,亦或是搜索引擎。
  3. 在避免影响用户的情况下如何发布更新。是否有一个或者多个测试/临时以便在不打断站点访问的情况下进行架构、代码及内容的更新。是否有自动化的方式对在线站点进行发布。这些可以使用一套版本控制系统及自动化构建方式来有效实施。
  4. 不允许向用户提示不友好的错误信息。
  5. 不要以纯文本的方式提供出用户的email地址,因为他们会收到过多的垃圾邮件而死亡。
  6. 在用户生成的链接上增加rel=”nofollow”属性,以避免垃圾邮件。
  7. 对你的站点建立些限制,当然这应该是经过深思熟虑的-这也属于安全性范围。
  8. 学习如何逐步提高站点功能。
  9. 为避免重复提交,当POST成功执行后需要进行页面跳转。
  10. 不要忘记考虑辅助功能。它总是一个好主意,且在某些情况下这是一个法律要求。 WAI-ARIA和WCAG2个在这方面的良好资源。
  11. 不要让我想该如何进行操作。

安全性

  1. 这有很多需要阐述,但是OWASP开发指南中依据对web站点安全性从头到脚进行了介绍。
  2. 要了解注入特别是SQL注入,并学会如何避免他。
  3. 永远不要相信用户的输入,也不是来自于请求别的(包括cookie和隐藏的表单字段值)。
  4. 不要使用单独类似MD5或SHA加密策略,在进行散列密码值时,使用作料或多种作料以防止彩虹攻击。对于短密码,采用一个短散列算法处理,例如:bcrypt或scrypt。
  5. 不要使用你想象中的身份认证系统,很容易得到一个微妙的错误和不可测试的问题,甚至你自己都不知道会怎么回事。
  6. 了解处理信用卡规则。
  7. 使用SSL/HTTPS处理任何敏感数据。
  8. 防止会话劫持。
  9. 避免跨站点脚本攻击。
  10. 避免跨站点请求伪造。
  11. 避免点击劫持。
  12. 确保你的系统安装了最新的补丁。
  13. 确保你的数据库连接信息是安全的。
  14. 了解最新的攻击技术以免影响到你的平台。
  15. 阅读谷歌安全手册。
  16. 阅读web应用程序黑客手册。
  17. 考虑最小权限的负责人机制。
  18. 性能
    1. 如果有必要的话实现缓存策略。理解Http caching和html5 manifest并在合适的地方使用它们。
    2. 优化图像-不要使用20 KB大小的图像做重复背景。
    3. 了解如何gzip/deflate内容。
    4. 合并/连接多个样式表或多个脚本文件,以减少浏览器连接的数量,并通过gzip来压缩多个文件中的重复内容。
    5. 阅览雅虎卓越性能站点,其中包含大量很棒的指南,例如端到端的性能提升方法,YSlow工具。Goole page speed是是一个优化参考的好去处。
    6. 使用CSS image sprite技术减少图片请求。(ps:前段时间用node-canvas做了个本地化的css-sprite工具,有需要的可以找我拿源码^_^)。
    7. 访问量大的站点可以将内容划分到多个域下,但不要超过4个域。
    8. 静态内容(例如图片,css文件,js文件及一些静态文本)应该存放在一个单独的域下面,并且不能使用cokies,因为在每次请求时,都会将cookies带上。CDN(内容分发网络)是一个不错的选择。
    9. 减少一个浏览器页面上发起的http请求数量。
    10. 使用JavaScript文件压缩技术。
    11. 确保在站点的根目录下有一个favicon.ico文件,即使该文件未被任何使用,流量器也会自动加载它。如果没有这个文件的话,将会导致大量的404错误,从而占用你的服务器带宽。
    12. SEO(搜索引擎优化)
      1. 使用搜索引擎友好的的url,例如:使用example.com/pages/45-article-title 而非example.com/index.php?page=45
      2. 当使用#动态内容更改#到#!然后在服务器$_REQUEST[“_escaped_fragment_”]是什么Googlebot使用,而不是#!换句话说,#!页= 1/变成/?_escaped_fragments_=页= 1。此外,对于可能使用FF.b4或铬,history.pushState用户({“foo”的:“酒吧”}“。?/页=1”,“关于”,);是一个伟大的命令。因此,即使在地址栏改变了页面不会重新加载。这使您可以使用?而不是#!保持动态内容,并告诉服务器当您发送电子邮件,我们是这个页面后的链接,以及AJAX并不需要再作额外的要求。(Google翻译,没有完全理解…)
      3. 不要使用”click here”这样的链接,这样会浪费SEO的机会并且也会让人更加难以理解。
      4. 要有一个XML站点地图,最好是在默认位置/sitemap.xml的。
      5. 当你有两个指向不同的地址,可以使用<link rel="canonical".../>,这个问题也可以从谷歌网站管理员工具解决。
      6. 使用Google Webmaster Tools 和 Bing Webmaster Tools.
      7. 使用Google Analytics。
      8. 了解机器人搜寻算法和搜索引擎爬虫的工作方式。
      9. 重定向请求(使用301永久移动)要求www.example.com到example.com(或者反过来),以防止分裂谷歌两个网站之间的排名。
      10. 你还要知道还有很多恶心的爬虫程序运作在网络上。(以前在做一个百科词条整理时,对某网站的词条进行了深度遍历,但程序运行不久IP就被封杀了。)
      11. 技术点
        1. 理解HTTP协议,例如:GET,POST,Session,Cookies以及“无状态”的含义。
        2. 根据W3C规范写你的XHTML/ HTML和CSS,并确保他们通过验证。这是为了避免浏览器的使用非标准的浏览器,如屏幕读取器和移动设备的正常工作。
        3. 了解JavaScript在浏览器中的运行机制。
        4. 理解JavaScript、css及其他资源在页面上是如何被加载的,并考虑他们对性能的影响。现在普遍接受将脚本放在应用程序或html5底部执行。
        5. 了解JavaScript沙箱的工作原理,特别是如果你打算使用iframe。
        6. 你要注意到JavaScript是可以被禁止的,并且AJAX是一个拓展而非基线。很多普通用户已经离开了它,NoScript越来越受欢迎,移动设备或许不会像你想象的那样运行,谷歌将无法运行大部分的的JavaScript。(不解,noscript标签是定义在未能执行js时的输出,当是当前js横行的时代,真的还有很多用户禁用js吗???)
        7. 理解重定向301和302的区别。(这也是SEO中的一项)
        8. 尽可能深入了解你的开发环境。
        9. 考虑使用Reset CSS或Normalize.css。
        10. 考虑JavaScript框架(如jQuery,MooTools,Prototype,Dojo或YUI3),这将使用JavaScript进行DOM操作时,隐藏了很多的浏览器差异。
        11. 考虑到JS框架及性能,可以使用一个服务,如谷歌库API来加载框架,使浏览器可以使用它已经缓存,而不是从你的网站下载一个副本的框架副本。(CDN)
        12. 不要重复造轮子。做任何事情之前先搜索关于如何做到这一点的组件或例子。有99%的可能性有人已经做到了和发布了一个开源版本的代码。

一个web开发人员在发布站点前你需要考虑哪些技术细节,布布扣,bubuko.com

时间: 2024-10-22 21:32:34

一个web开发人员在发布站点前你需要考虑哪些技术细节的相关文章

[译]作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的

前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的"每个程序员必知之WEB开发". 原文: http://programmers.stackexchange.com/questions/46716/what-technical-details-should-a-programmer-of-a-web-application-consider-before 问:对于一个web开发人员来说,在发布一个站点之前,他需

作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的

前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的"每个程序员必知之WEB开发". 原文: http://programmers.stackexchange.com/questions/46716/what-technical-details-should-a-programmer-of-a-web-application-consider-before 问:对于一个web开发人员来说,在发布一个站点之前,他需

作为Web开发人员,我为什么喜欢Google Chrome浏览器

在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更因为FireFox有强大的Firebug,对于前端开发可谓神器. 在Chrome出来的时候,我就喜欢上它的简洁.快速,无论是启动速度还是页面解析速度还是Javascript执行速度(现在的FireFox4也比之前的FireFox3有很大的进步).不过当时由于Chrome的开发者工具还不是很完善,而我又不是很熟悉,加之对于Firebug的好感和依赖,当时还是用回FireFox作为我的主浏览器.

HTTP:每个web开发人员必须知道的协议-基础篇

http://blog.csdn.net/sql_wtx/article/details/8894447 原文是http://net.tutsplus.com/tutorials/tools-and-tips/http-the-protocol-every-web-developer-must-know-part-1/,翻译这面文章的目地是为了更加深刻的了解HTTP协议.现在web技术日新月异,只有对其协议了解清楚,才能更快.更稳固掌握这些新技术.由于文章很长,我会分成几篇博客来翻译,文章里面也

Web开发人员常犯的10个错误

说到开发一个运行在现代网络中的网站:Web开发人员需要选择虚拟主机平台和底层数据存储,准备编写HTML.CSS和JavaScript用的工具,要有设计执行方式,以及一些可用的JavaScript库/框架.在将任务分解为这几步之后,接下来要做的就简单多了,可以去网上找文章,浏览论坛,看看那些能提供更好的Web体验提示的示例. 然而不管是走哪条路,犯错却是每一个开发人员都不可避免的.虽然有些错误与某一个具体的行为相关,但有些错误却是所有Web开发人员都需要面对的挑战.因此,通过研究,体验和观察,我总

【Tomcat】面向初级 Web 开发人员的 Tomcat

Apache Tomcat 应用服务器不再是高级 Web 系统开发人员的专用领域.在本教程中,Sing Li 将向初级 Web 开发人员展示如何利用他们当前的 Java™ 开发技能,使用 Tomcat 编写服务器端 JSP.servlet 和 Web 服务. 开始之前 关于本教程 本教程向 Java Web 开发人员介绍使用 Tomcat 对 JavaServer Pages (JSP).servlet 和 Web 服务进行编程,Tomcat 是来自 Apache Foundation 的开源应

初级 Web 开发人员的 Tomcat

介绍使用 Tomcat 对 JavaServer Pages (JSP).servlet 和 Web 服务进行编程,Tomcat 是来自 Apache Foundation 的开源应用服务器.本教程引导您完成以下任务: 下载和安装您自己的 Tomcat 服务器. 在 Tomcat 上编码和部署 JSP. 在 Tomcat 上编码和部署 servlet. 使用 Tomcat 和 Apache Axis 编码和部署 Web 服务. 本教程概述 JSP.servlet 和 Web 服务,但不会深入讨论

如何使用SEO吸引Web开发人员[Bonus PDF]

您已经找出了问题所在,并且向Web开发团队提供了一系列要求清单:重新索引这些页面,修复此重复内容,重定向这些URL ...但是这些修复的优先级是多少?您花了多少时间推动他们到达那里? 与您的Web开发人员建立积极,有效的关系是您作为SEO可以做的最聪明(也是最富有同情心)的事情之一.毕竟,它们是您的另一半,是使您快速而顺利地完成工作的关键.在本周五的白板上,小甜甜布兰妮(Britney Muller)分享了六种基本方法,使您的Web开发人员可以参与SEO,从工作中更好地理解他们的角色并在可能的情

上海岳城科技web开发人员职业发展的11个阶段

今天我们带来的是一篇有趣的关于web开发人员职业发展11个不同阶段的文章. web开发人员是个有着许多阶段,非常有趣并且拥有挑战的一个职业.考虑到这陡峭的学习曲线,你可以完全预期到你将经历挫折,启蒙,自以为是以及在这些心态之间的转变.在这篇文章中,我们通过一系列超犀利的动画视角来看看这些阶段,相信这将非常有趣. 阶段一 菜鸟 在职业初期,我们总会有温热感,这段时期你对自己在做什么绝对是毫无头绪.就像是离了水的鱼,每一行代码都是一个谜.DOCTYPE?哈?见鬼的<div>是做什么的?第一个阶段是