https
https是在http与tcp之间增添了一个加密/身份验证层(SSL)
http与https区别
- http是明文传输信息,而https则是具有安全性的SSL加密传输,比http更安全;
- http和https连接方式不同,端口也不一样,http是80,https是443
http无状态协议是什么?怎么解决
无状态协议是对于事务处理没有记忆能力。
使用Cookie来解决无状态。
常用的HTTP方法
- GET、POST
- PUT: 传输文件
- DELETE:删除文件
- OPTIONS:查询相应URI支持的HTTP方法
完整HTTP请求所经历的7个步骤
- 建立TCP连接
- 浏览器向服务器发送请求行
- 浏览器发送请求头
- 服务器应答
- 服务器发送应答头
- 服务器向浏览器发送数据
- 服务器关闭TCP连接
http的keep-alive
TCP连接在发送后将仍然保持打开状态,浏览器可以继续通过相同的连接发送请求,节省了建立连接所需时间和网络带宽。
Ajax请求过程
- 创建XMLHttpRequest对象
- 设置回调函数
- 与服务器建立链接,open()
- 向服务器发送数据,send()
- 在回调函数中判断响应状态并处理数据
常见HTTP状态码
200:请求成功
301:永久性重定向
302:临时重定向
403:请求的对应资源禁止被访问
404:服务器无法找到对应资源
500:服务器内部错误
503:服务器正忙
网页从输入网址到加载完成的过程
- 浏览器输入url
- 域名解析(DNS解析),解析获取相应IP地址
- 浏览器向服务器发起并建立tcp连接
- 浏览器向服务器发送http请求
- 服务器接收请求,将数据发送浏览器
- 浏览器获取文件,解析html源码
- 生成Dom树,解析css样式,js交互,完成渲染
浏览器同源策略
同源策略是指"协议+域名+端口"三者相同
分为两种:DOM 同源策略,XMLHttpRequest同源策略
跨域方式
- 通过jsonp跨域
- document.domain + iframe跨域
- location.hash + iframe
- window.name + iframe跨域
- postMessage跨域
- nginx代理跨域
- nodejs中间件代理跨域
- WebSocket协议跨域
网站性能优化
- 减少HTTP请求
- 利用浏览器缓存
- 减少DOM操作
- 首屏加载和按需加载
- 减少浏览器重排和重绘
- js和css文件合并压缩
- CSS资源放顶部,JS资源放底部
- 图片使用png格式
虚拟DOM
用js实现DOM树,用diff算法对每一层比较,找出最小变更,然后改变实际DOM,达到性能优化的方案。
浏览器重排和重绘
重排是DOM元素的几何变化,DOM树结构变化,渲染树需要重新计算;
重绘是当页面中的元素样式的改变并不影响它在文档流中的位置,比如改变背景,颜色,字体等等,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。
常见浏览器内核
IE浏览器:Trident内核
Chrome浏览器:早期Webkit内核,现为Blink内核
Firefox浏览器:Gecko内核
Safari浏览器:Webkit内核
360浏览器:Trident + Webkit双内核
QQ浏览器:Trident + Webkit双内核
常见兼容性问题
不同浏览器的默认margin、padding不同
解决方案:css里增加通配符*{margin:0;padding:0}事件绑定不同
IE浏览器: dom.attachEvent()
其他:dom.addEventListener()Ajax略有不同
IE浏览器:ActiveXObject对象
其他:XMLHttpReuest对象