## `HTML`优化 > * 插入`HTML`。 > * `JavaScript`中使用`document.write`生成页面内容会效率较低,可以找一个容器元素,比如指定一个`div`,并使用`innerHTML`来将`HTML`代码插入到页面中。 > * 避免空的`src`和`href`。 > * 当`link`标签的`href`属性为空、`script`标签的`src`属性为空的时候,浏览器渲染的时候会把当前页面的`URL`作为它们的属性值,从而把页面的内容加载进来作为它们的值。 > * 为文件头指定`Expires`。 > * 使内容具有缓存性,避免了接下来的页面访问中不必要的HTTP请求。 > * 重构HTML,把重要内容的优先级提高。 > * Post-load(次要加载)不是必须的资源。 > * 利用预加载优化资源。 > * 合理架构,使DOM结构尽量简单。 > * 利用`LocalStorage`合理缓存资源。 > * 尽量避免CSS表达式和滤镜。 > * 尝试使用defer方式加载Js脚本。 > * 新特性:will-change,把即将发生的改变预先告诉浏览器。 > * 新特性Beacon,不堵塞队列的异步数据发送。 > * 不同之处:网络缓慢,缓存更小,不令人满意的浏览器处理机制。 > * 尽量多地缓存文件。 > * 使用HTML5 Web Workers来允许多线程工作。 > * 为不同的Viewports设置不同大小的Content。 > * 正确设置可Tap的目标的大小。 > * 使用响应式图片。 > * 支持新接口协议(如HTTP2)。 > * 未来的缓存离线机制:Service Workers。 > * 未来的资源优化Resource Hints(preconnect, preload, 和prerender)。 > * 使用Server-sent Events。 > * 设置一个Meta Viewport。