高性能建站指南

《高性能建站指南》上次读是六年前在大学的时候,昨天下午有空从新读了一遍,所以留下笔记,加上了一些本身的理解css

一、减小http请求

   图片地图,css sprites,内联图片,合并脚本和样式表node

二、使用内容发布网络

  cdn,缩短用户和服务器之间的接收距离,下降中央服务器的压力ajax

三、添加expires头

 可以在过时时间前运用缓存浏览器

  expires 定义静态资源的过时日期,缺点是要保持用户的系统时间和服务器的时间一致,缓存

  max-age 优先级比expires高,定义还有多长时间过时,所以用户系统时间无不须要和服务器的时间一致服务器

为组件添加长久的expries头网络

四、压缩组件(css、js)

客户端发送获取资源的request会带上 Accept-Encoding:gzip,deflate,请求的response返回 Content-Encoding:gzip,tcp

主流浏览器都支持解压gzip压缩的文件,业界也主要使用gzip压缩文件,服务器压缩组件会增长服务器负载(细微得能够忽略?)性能

对应有些浏览器不支持gzip压缩,服务器会告知代理须要获取accept-encoding请求头来决定是否发送压缩的文件,Vary:Accept-Encoding代理

五、将样式表放在顶部

浏览器逐步呈现,所以尽早加载构建好css Tree能更快构建好RenderTree,减小浏览器白屏时间加强用户体验

@import引用的CSS会等到页面所有被下载完再被加载,不建议使用

使用Link标签将样式表放在head中

六、将脚本放在底部

同步(以script标签)加载脚本会阻塞后续资源加载,而且在浏览器解析js时候,会阻塞renderTree的构建

七、避免CSS表达式

CSS表达式容易致使页面性能开销大,所以要避免用

八、使用外部JavaScript和css

内联的JavaScript和css虽然减小了http请求开销,可是会致使JavaScript和css没法利用浏览器缓存

将JavaScript和css放到外部文件中

九、减小DNS查找

TTL(time-to-alive)告诉客户端对改记录保存多久,然而浏览器通常会忽略该值

开启keep-alive(我的以为keep-alive主要是经过重用tcp/ip通道减小tcp握手时间,对DNS查找无多大相关影响)

经过使用keep-alive和较少域名来减小DNS查找

十、精简JavaScript(JavaScript、css)

对JavaScript源代码进行精简

十一、避免重定向

寻找一种避免重定向方法

十二、删除重复脚本

确保脚本只被包含一次

1三、配置Etag

Etag即为文件的版本号,当文件超过了过时时间,浏览器会向服务器发起文件请求,若浏览器缓存文件的Etag和服务器一致,

服务器返回304,浏览器则会继续使用本地缓存文件,

不一样的服务器对相同的文件的etag定义(inode-size-timestamp)是不一样的,浏览器访问不一样的服务器会致使相同的文件却没法经过Etag重用缓存

建议配置Etag,只包含大小和时间戳或只有时间戳,或者移除Etag(last-modified头能够提供等价信息),移除Etag能够减少http头大小

1四、使用Ajax可缓存

确保ajax请求遵照性能指导,尤为应具备长久的Expires头

相关文章
相关标签/搜索