前端性能优化

sankigan2019-4-4前端性能优化

!!! 重点请看这篇文章open in new window

请说出三种减少页面加载时间的方法

  • 压缩js、html、css和图片,使用gzip编码传输,减少传输时间
  • 选择合适的图片格式,合理利用缓存,减少传输时间
  • 合并js、css及图片(精灵图),减少请求数量
  • 避免不必要的repaint和reflow,合理利用GPU加速渲染
  • 避免不必要的重定向,使用长连接,优化网络结构
  • 使用CDN(内容分发网络)减短数据传输路径
  • 优化服务器,快速响应与负载均衡

什么是CDN?有哪些优点?

参考这篇文章open in new window

CDN,中文名叫内容分发网络,它的作用是减少传播时延,找最近的节点。CDN本质就一个是缓存,只是这个缓存离你特别近,不管是作为用户还是开发人员都能从中享受一点福利。

CDN的优点

  • 访问加速
  • 减轻源站(服务器)负载
  • 抗住攻击

CDN的缺点

  • 只能对静态内容加速
  • 内容更新时需要分发到其他节点
  • 代价高昂

CDN与传统网站访问的区别

  • 传统网站访问:

  • 使用了CDN的网站访问

与传统访问方式不同,CDN网络则是在用户和服务器之间增加缓存层,将用户的访问请求引导到最优的缓存节点而不是服务器源站点,从而增加访问速度。

完整的CDN工作流程

完整的CDN工作流程

总结一下CDN的工作原理:通过权威DNS服务器来实现最优节点的选择,通过缓存来减少源站的压力。应用场景:静态网页、大文件下载、动态加速和应用加速等。

应用与踩坑

  • 缓存设置

    max-age在Cache-Control中经常用于缓存的控制,可是max-age设置的缓存会应用于一个请求经过的每一级,如果我们希望CDN不缓存那么久,要怎么办呢?那就是s-maxage,它用于设置代理服务器的缓存时间,会覆盖max-age的设置,这样我们可以把max-age用于本地缓存,把s-maxage用于CDN缓存时间,避免脏数据的产生。

  • 缓存命中率

    对于一个缓存而言,还有一点非常重要,就是你的缓存到底有没有用,衡量这个东西的就是缓存命中率。如果只是静态资源,在刷新缓存之后,可能导致命中率下降,因此CDN的资源不适合经常刷新,换句话说,如果一个请求结果会经常进行变更,那么CDN基本就没有什么存在的意义了。

  • 判断是否命中缓存

    还要考虑的一件事是:这个资源是否命中了CDN,是否是因为CDN导致的问题。

    在各大厂商的CDN返回的数据中都会有一个X-Cache,上面内容是Hit或者Miss,还会加上诸如Memory或者Disk的缩写表示内存还是磁盘,如果出现Upstream或者Miss则表示没有命中。

  • 资源预热

    缓存设计中,预热是很重要的环节,在最初刚开始启动CDN的时候,CDN上并没有缓存数据,此刻大量的请求全部打向源站,肯定会把源站打挂,预热就是实现缓存热门数据,这样在业务上线时,CDN上已经有所需的数据了。

  • Vary

  • Range

  • 无私钥HTTPS


更新于 2025/2/11 22:37:44