1.get 和 post 的区别?
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
“标准答案”:
-
GET在浏览器回退时是无害的,而POST会再次提交请求。
-
GET产生的URL地址可以被Bookmark,而POST不可以。
-
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
-
GET请求只能进行url编码,而POST支持多种编码方式。
-
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
-
GET请求在URL中传送的参数是有长度限制的,而POST么有。
-
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
-
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
-
GET参数通过URL传递,POST放在Request body中。
个人理解:
get和post本质上是没有区别的,http协议中的两种发送请求的方法。
http是基于tcp/ip的关于数据如何在万维网中如何通信的协议。
http的底层是tcp/ip。所以get和post的底层也是tcp/ip,都是tcp链接,能做的事情是一样一样的。给get加上request body,给post带上URL参数,技术上来说也是完全行得通的。
所以,get和post本质上就是tcp链接,并无差别。但是由于http的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
还有一个重大区别:get产生一个tcp数据包,post产生俩个tcp数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
栗子理解:也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
1. GET与POST都有自己的语义,不能随便混用。
2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
2.前端开发人员对于SEO有哪些需要注意事项(优化技巧)?
1、简化代码结构,更利于搜索引擎分析抓取有用内容。
2、重要内容优先加载。
3、每个页面只能出现一次H1标签,H2标签可以多次。
4、图片一定要添加alt属性,title属性可选。
5、图片大小声明。
6、链接可根据实际需求添加title属性以及nofllow值;
7、页面内容尽量不要做成flash、图片、视频。
8、除首页外别的页面最好要加上面包屑型导航,导航结构一定要清晰。
9、做好404页面。
10、网站结构呈扁平状树型,目录结构不宜过深。
http://www.cnblogs.com/shiddong/p/5951936.html
3.REM布局。
rem(font size of the root element)是指相对于根元素的字体大小的单位,简单的说它就是一个相对单位。看到rem大家一定会想起em单位,em(font size of the element)是指相对于父元素的字体大小的单位。
rem布局的兼容性:Mozilla Firefox 3.6+、Apple Safari 5+、Google Chrome、IE9+和Opera11+、ie6-ie8 还是别用rem。
REM可以:
1,实现强大的屏幕适配布局
参考:http://caibaojian.com/web-app-rem.html
4.JavaScript实现继承;
1.使用对象冒充实现继承(该种实现方式可以实现多继承)
实现原理:让父类的构造函数成为子类的方法,然后调用该子类的方法,通过this关键字给所有的属性和方法赋值。
2.采用call方法改变函数上下文实现继承(该种方式不能继承原型链,若想继承原型链,则采用5混合模式)
实现原理:改变函数内部的函数上下文this,使它指向传入函数的具体对象。
3.采用Apply方法改变函数上下文实现继承(该种方式不能继承原型链,若想继承原型链,则采用5混合模式)
实现原理:改变函数内部的函数上下文this,使它指向传入函数的具体对象。
4.采用原型链的方式实现继承
实现原理:使子类原型对象指向父类的实例以实现继承,即重写类的原型,弊端是不能直接实现多继承。
5.采用混合模式实现继承
参考:http://javapolo.iteye.com/blog/1996871