为什么利用多个域名来存储网站资源会更有效?

1.CDN 缓存更方便

http缓存是浏览器端缓存,cdn是服务器端缓存。

举个例子来说明cdn的作用:cdn就是代理。厂家给商家发货,你从商家买货,商家就是cdn,很方便。

CDN怎么缓存呢

和Http类似,客户端请求数据时,先从本地缓存查找,如果被请求数据没有过期,拿过来用,如果过期,就向CDN边缘节点发起请求。CDN便会检测被请求的数据是否过期,如果没有过期,就返回数据给客户端,如果过期,CDN再向源站发送请求获取新数据。和买家买货,卖家没货,卖家再进货一个道理^^。

CDN边缘节点缓存机制,一般都遵守http标准协议,通过http响应头中的Cache-Control和max-age的字段来设置CDN边缘节点的数据缓存时间。

2.突破浏览器并发限制

随着现在的网页设计的越来越炫酷,功能越来越丰富。伴随着的是网页加载的资源越来越多,常常一个页面加载的CSS、JS、图片、接口等超过几十上百个。

但其实,在客户端,浏览器并不一定会对每个资源开个连接去请求加载,是有并发限制的。

这其实是基于多方面因素考量出的优化结果,比如:

  • 对客户端操作系统而言,过多的并发涉及到端口数量和线程切换开销。
  • HTTP/1.1有Keep Alive,支持复用现有连接,等请求返回回来后,再复用连接请求可以快很多。
  • 将所有请求一起发给服务器,也很可能会引发服务器的并发阈值控制而被BAN。

也并不是浏览器限制并发了,我们就没别的办法了。提升页面打开速度的技术有很多,常见的:

  • domain hash:对资源做哈希,请求到不同的域下面。
  • cookie free:前后端分离,减少不必要的cookie提交。
  • css sprite:将零星的图片整合到一张大图中,减少请求次数。
  • js/css combine:资源合并,减少请求次数,不过也会增加文件修改的几率。
  • max expires time:合理设置客户端缓存时间。
  • loading images on demand:图片按需加载。

域名发散与收敛

域名发散:

因为浏览器对同一域名下的最大连接数做了限制,为了让浏览器并发加载,将资源分散到不同域名下,缺点是需要DNS解析更多的域名

域名收敛:

在移动场景下,为了解决DNS解析耗时问题,将资源汇总到一个或更少的域名下。

3.节约 cookie 带宽

cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的。
第一:每个特定的域名下最多生成20个cookie

优点:极高的扩展性和可用性

1.通过良好的编程,控制保存在cookie中的session对象的大小。

2.通过加密和安全传输技术(SSL),减少cookie被破解的可能性。

3.只在cookie中存放不敏感数据,即使被盗也不会有重大损失。

4.控制cookie的生命期,使之不会永远有效。偷盗者很可能拿到一个过期的cookie

缺点:

1.Cookie数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。

2.安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。

3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用

4.节约主域名的连接数,优化页面响应速度

5.防止不必要的安全问题

资料参考

CDN缓存

聊聊浏览器请求并发限制

    原文作者:阿珊和她的猫
    原文地址: https://blog.csdn.net/weixin_42554191/article/details/109559973
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞