Web开发中需要了解的东西
Web开发中需要了解的东西,作为一个web开发人员,还是有些东西需要大家去了解的。
Web开发中需要了解的东西
接口和用户体验
1.首先,需要确保你的网站能够兼容绝大部分的浏览器,最好能够兼容下面的浏览器
-
最新的Gecko引擎(Firefox)
-
最新的webkit引擎(chrome浏览器)
-
IE浏览器(测试兼容性的时候可以使用微软IE的 Application Compatibility VPC Images)
-
opera浏览器
2.多考虑考虑人们是怎么来访问你的网站的而不是那些主流的浏览器,手机,读屏软件(ipad),搜索引擎
3.部署Staging:怎么部署网站的更新而不会影响用户的访问(版本控制,自动化build,备份,回滚)
4.千万不要直接给用户显示不友好的错误信息
5.千万不要把用户的邮件 地址以明文显示出来,这样会被爬虫并让用户的邮箱被垃圾邮件搞死。
6.为用户的链接添加上rel = "nofollow"的属性以避免垃圾网站的干扰,
ps: nofollow是html的属性,用于通知搜索引擎:这个连接所指向的网页非我能控制的,对其内容不予置评。
或者简单的说,该链接不是对目标网站或者网页的访问,这样搜索引擎就不会再访问这个链接了。
7.为网站建立一些限制,这个属于安全性的范畴了(例如 短信认证,限制次数,captcha)
8.学习如何做 Progressive Enhancement
PS:包含的内容:1.基础的内容和功能应该可以被所有的浏览器存取,2.页面布局的应该使用外链的css链接
3.javascript 也应该是外部链接,还应该是unobtrusive的,4.应该让用户设置他们的偏好
9.如果POST成功,要在POST方法后重定向网站,这样可以阻止用户通过刷新页面重复提交。
10.关注Accessibility
安全
1.关注安全,OWASP(open web application security project)
2.了解什么是SQL注入攻击,并知道如何阻止这种攻击
3.永远不要相信用户的输入(包括cookies,因为这也是用户输入的)
4.对用户的口令进行hash,并使用salt,以防止rainbow攻击
ps:Hash算法可以使用MD5或者SHA1等,
对口令使用salt:在用户设定密码的时候,system会产生另外一个random string (salt).在database存储的时候是
salt+passworld产生的MD5sum以及salt,当要验证密码的时候就把user输入的string加上使用者的salt,产生md5sum来比较,理论上面用salt可以大幅度的让密码难以破解,相同的密码除非刚好salt相同,最后存储在database上的内容也是不一样的。
关于彩虹表攻击,意思就像密码字典表,但不同的是,rainbow表存的是已经被hash过的密码,而且其查找密码的速度更加的快速,这样可以更快的攻击了。
使用慢一点的hash算法来保存口令,例如bcrypt或者scrypt,
5.不要试图自己去发明或者创造一个自己的fancy的认证系统。
6.了解处理信用卡的一些规则。
7.使用SSL/HTTPS 来加密传输登录页面或者是任何可能有敏感信息的页面。
8.知道如何对付session劫持
9.避免跨脚本攻击(XSS)
10避免跨站伪造请求攻击(cross site request forgeries)(XSRF)
11 保持你的系统里面的所有软件更新到最新的patch
12. 保证你的数据库连接是安全的
13.确保你能了解最新的攻击技术,以及你的系统的脆弱性。
性能
-
只要需要,请实现cache机制,了解并合理使用 HTTP caching 以及 HTML5 Manifest
-
页面优化-千万不要使用20kb的图片平铺网页背景。
-
学习如何gzip/deflate 网页 (deflate 更好)
-
把多个css文件和javascript文件合并成为一个,这样可以减少浏览器的网络连接个数,并使用gzip压缩反复被使用到的文件
-
学习一下 Yahoo Exceptional Performance 这个网站上面的东西
-
为那些小的图片使用 css image sprites (最小化HTTP请求)
-
繁忙的网络应该考虑把网页的内容分开存放在不同的域名下面(使用专门的图片服务器,或者专门的ajax服务器)
-
静态页面应该放在一个不使用cookies的独立域名下面,因为所有在同一个域名或者子域名下面的cookies会被这个域名下面的请求一同发送,另外一个好的选择方法就是 content delivery network
-
使用单个页面的合同谈判请求数最小化
-
为javascript使用 google closure compiler 或者其他压缩工具
-
确认一下你的网站的 favicon.ico 文件放在网站的根下,如./favicon.ico,浏览器会自动的请求这个文件。就算这个图标文件没有在你的网页中明显说明,浏览器也会请求的,如果你没有这个文件,就会发生大量的404错误,这样会造消耗你的服务器带宽。
SEO(搜索引擎优化)
-
使用搜索引擎最喜欢的url (例如 example.com/pages/44-article-title而不是 example.com/index.php?page=45)
-
如果你的动态页面需要使用到 # , 那么请换成 #! , 而在服务器端你需要处理¥
-
别使用“click here”这样的链接,这样一来无法SEO,而且对于一些需要使用读屏的人来说很不友好,
-
做一个 XML sitemap ,并放在网站的跟下 /sitemap.xml ,这样可以让搜索引擎更好的了解网站图
-
当你有个多个URL指向同一个url的时候,使用 <link rel = "canonical" .../>
-
使用google webmaster tools 和 yahoo site explorer
-
安装google analytics
-
了解robots.txt 和搜索引擎爬虫是如何工作的。
-
重定向请求,使用(301重定向网站),如果你要把www.example.com 定向到 example.com 或者是其他的变更,这样可以防止google的rank因为域名的改变而发生改变。
-
知道并不是所有的爬虫都是好的,也有些爬虫的行为并不好,比如向你的网站发起大量请求会造成服务器的性能下降。
技术
-
了解什么是HTTP 比如: GET, POST, sessions,cookies 了解什么是 statusless 无状态
-
让你的XHTML/HTML 和 css 复合W3C规范,并确认他们都是合格的,我们的目标是避免浏览器的 quirks mode,并且可以让其更容易地能和非标准的浏览器工作,比如读屏器移动设备。
-
了解浏览器是怎么处理javascript的,最好能够了解为什么有些js代码是在页面前面,有些则是在页面后面的
-
了解浏览器是怎么装载javascript,css和其他资源的,了解其对视觉上的影响。
-
了解javascript的sandbox是怎么工作的,尤其当你想使用iframes的时候。
-
注意javascript是可以被禁止掉的,这样会让你的ajax失效掉。
-
学习301 和 302 转向的区别。
-
尽可能多的学习你的部署平台,比如操作系统,web server ,apache/nginx 防火墙,数据库,等等
-
考虑使用一个 Reset style sheet
-
考虑下使用javascript框架
-
把视觉设计和js框架组合起来考虑,考虑使用一个service,比如Google libraries api 来转载框架,这样就可以让浏览器可能早的把这些缓存起来,而不是从你的网站上下载。
Bug fixing
-
要明白你会花20%的时间写代码,而80%的时间维护,所以小心你的编码
-
设计一个好的错误报告机制
-
设计一个入口可以让人们联系到你并给你建议和批评
-
为你开发出来的系统形成文档,这样可以让后来的人容易维护你的软件和系统。
-
频繁备份
-
使用一个版本控制系统来保存你的代码 例如 svn 或者 git
-
确保足够的日志,方便你快速的定位问题
-
当你写日志的时候,确保你记录的日志捕获了你的处理和处理异常,报告和分析日志可以让知道你的网站的问题。