不建议使用:
1、ajax不支持浏览器back按钮。
2、安全问题 AJAX暴露了与服务器交互的细节。
3、对搜索引擎的支持比较弱。
4、破坏了程序的异常机制。
5、不容易调试。
说道分批加载 就会提到dom渲染 作为小白的我立马去百度了一下
浏览器是如何渲染页面的呢 dom渲染是如何工作的呢
输入的网址在通过DNS解析后得到服务器地址
浏览器向服务器发起http请求,经过TCP/IP三次握手确认链接后,服务器将需要的代码发回给浏览器。
浏览器接收到代码后进行解析,经过三大步骤:
DOM构造、布局以及绘制页面,最终展现为人人都能看懂的网页。
第一步,DOM构造
浏览器首先将收到的html代码,通过html解析器解析构建为一颗DOM树。DOM树就像是一颗倒长着的大树,这样的对象模型决定了节点之间都有一定的关联,它们关系可能有父子、有兄弟,我们可以顺着这颗树做出许多操作。接着将接收到的css代码,通过css解析器构建出样式表规则,将这些规则分别放到对应的DOM树节点上,得到一颗带有样式属性的DOM树。
第二步,布局
浏览器按从上到下,从左到右的顺序,读取DOM树的文档节点,顺序存放到一条虚拟的传送带上。
传送带上的盒子就是节点,而这条流动的传送带就是文档流。
如果我们读取到的节点是属于另一个节点下的子节点,那么在放入传送带的时候,就应该按顺序放到该节点盒子的内部。
如果子节点下还有子节点,在传送带上的时候就继续套到子一级的盒子内部。
根据它在DOM树上的结构,可以嵌套的层级没有限制的哦。
文档流排完之后,开始获取计算节点的坐标和大小等CSS属性,作为盒子的包装说明。
然后把盒子在仓库里一一摆放,这就将节点布局到了页面。
第三步,绘制页面
布局完成之后,我们在页面上其实是看不到任何内容的
浏览器只是计算出了每一个节点对象应该被放到页面的哪个位置上,但并没有可视化。
因此最后一步就是将所有内容绘制出来,完成整个页面的渲染。
body下的子元素有三个nav,aside和div
注:
如果遇到图片只需要把它当做设置了宽高的普通行内元素处理。
当然你也可以设置它的属性为块级元素,改变图文混排时布局的效果。
请求资源版本
HTTP协议规格说明定义ETag为“被请求变量的实体值”,包含在头文件中。另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端返回的格式:ETag:"50b1c1d4f775c61:df3"客户端的查询更新格式是这样的:If-None-Match : W / "50b1c1d4f775c61:df3"如果ETag没改变,则返回状态304然后不返回,这也和Last-Modified一样。测试Etag主要在断点下载时比较有用。
什么是减少重定向?简单来说就是减少中间商 减少用户访问页面的跳转。
状态码 301表示请求的页面移动稍后也会访问 302 表示请求的网页被找到了但不在原始位置
301重定向永久搜索引擎直接到b点
302无论如何都要从a点
CSS JavaScript文集体积减小 提升下载速度 具体方法就是代码格式化
简写参数名 适用于正式上线项目 压缩可以使线上版本是最轻的 。
yslow工具作用
GET和POST的区别
重定向:
301: 永久重定向
302: 临时重定向
通过对资源的压缩,减少其在HTTP传输过程中的编码、解码所需要的交互时间
Wxpire/Cache-Control 头 的 作用:
通过由服务器响应的同时携带一个expire过期时间值,当本地时间未到达expire的设定值时,本地的请求会一直使用前一次所响应后cache缓存在本地的资源,直到expire过期时间生效,本地缓存失效,才再次从服务器获取新的响应资源数据
没有使用CDN,没有进行内容分发的服务请求流程图
get和post对比
ETag标记
get和post区别
先成呈现内容 不会让用户等太久
gzip文本压缩,服务器端;
2.使用CDN
post:每次都执行,不被缓存。
get:同一地址不重复执行,可以被缓存
301永久重定向 302临时重定向
CDN解释
把js和css放到页面内的情况
把js和css放到外部文件或者内部中的优点
页面加载解析顺序
css expressions在低版本ie6,ie7浏览器中存在