6. 浏览器的内核
浏览器的内核有两部分,一个是渲染引擎,一个是JS引擎,由于JS引擎较为独立,所以内核更倾向于说是渲染引擎。
1、Trident内核
代表浏览器是IE,此内核只能用于Windows平台,且不是开源的。
2、Gecko内核
代表作品是Firefox,最大优势是跨平台,在Microsoft Windows、Linux、MacOs X等主要操作系统中使用。
3、Webkit内核
代表作品是Safari、曾经的Chrome,是开源的项目。
4、Presto内核
代表作品是Opera,Presto是由Opera Software开发的浏览器排版引擎,它是世界公认最快的渲染速度的引擎。在13年之后,Opera宣布加入谷歌阵营,弃用了Presto。
5、Blink内核
现在Chrome的内核是Blink。由Google和Opera Software开发的浏览器排版引擎,2013年4月发布。
7. HTTP 状态码为 200 from cache和304 Not modified的区别
请求状态码为 200 from cache:
表示该资源已经被缓存过,并且在有效期内,所以不再向浏览器发出请求,直接使用本地缓存。
状态码为 304 Not modified:
表示浏览器虽然发现了本地有该资源的缓存,但是不确定是否是最新的,于是想服务器询问,若服务器认为浏览器的缓存版本还可用(即还未更新),那么便会返回304,继续使用本地的缓存。
8. 什么是预加载、懒加载
预加载
提前加载图片,当用户需要查看时可以直接从本地缓存中渲染。
懒加载
懒加载也就是延迟加载。当访问一个页面的时候,先用占位图代替img元素或是其他元素的背景图片,这样就只需请求一次,只有当图片出现在浏览器的可视区域内时,才设置图片真正的路径,让图片显示出来。这就是图片的懒加载。
区别
两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。
9. 一个 XMLHttpRequest 实例有多少种状态?
XMLHttpRequest对象的readyState有5种状态:
1、(未初始化): (XMLHttpRequest)对象已经创建,但还没有调用open()方法;
2、(载入):已经调用open() 方法,但尚未发送请求;
3、(载入完成): 请求已经发送完成;
4、(交互):可以接收到部分响应数据;
5、(完成):已经接收到了全部数据,并且连接已经关闭。
10. DNS解析原理
DNS有两种类型的解析:
1、递归解析(递归查询);
2、反复解析(迭代查询);
浏览器DNS查找顺序一般是这样的:浏览器缓存→系统缓存→路由器缓存→ISP DNS 缓存→递归搜索。
递归查询
主机向本地域名服务器的查询一般都是采用递归查询。
如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是返回一个失败的响应,表示无法查询到所需的IP地址。
迭代查询
本地域名服务器向根域名服务器的查询通常是采用迭代查询。
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么返回给本地域名服务器所要查询的IP地址,要么返回给本地域名服务器下一步应当查询的域名服务器的IP地址。
举个例子:假设的主机想知道另一个主机(域名为 my.xxsilence.net)的IP地址。具体步骤如下:
① 主机先向其本地域名服务器进行递归查询,如果缓存中没有,继续下一步。
② 本地域名服务器采用迭代查询,先向一个根域名服务器查询。
③ 根域名服务器告诉本地域名服务器,下一次查询的顶级域名服务器 dns.net。
④ 本地域名服务器向顶级域名服务器 dns.net。
⑤ 顶级域名服务器 dns.net,下一次应查询的权限域名服务器dns.xxsilence.net的IP地址。
⑥ 本地域名服务器向权限域名服务器dns.xxsilence.net进行查询。
⑦ 权限域名服务器dns.xxsilence.net告诉本地域名服务器,所查询的主机的IP地址。
⑧ 本地域名服务器最后把查询结果告诉主机。
11. COOKIE和SESSION有什么区别?
1、session在服务器端,cookie 在客户端(浏览器);
2、session默认被存在在服务器的一个文件里(不是内存)
3、session 的运行依赖 session id,而 session id 是存在 cookie中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id);
4、session 可以放在文件、数据库、或内存中都可以;
5、用户验证这种场合一般会用 session;
12. 拆解url的各部分
完整的URL由这几个部分构成:
scheme://host:port/path?query#fragment
1、scheme:通信协议,常用的http,ftp,maito等
2、host:主机、服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。
3、port:端口号,整数,可选,省略时使用方案的默认端口,如http的默认端口为80。
4、path:路径,由零或多个"/"符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
5、query:查询,可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用"&"符号隔开,每个参数的名和值用"="符号隔开。
6、fragment:信息片断,字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。(也称为锚点.)