企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### CDN的作用: 加速文件网络传输 ### CDN大致原理: 优化物理链路层传输过程中的光速有限、丢包等问题来提升网速,其优势是通过各地的服务器部署, 使用户在不同的地方访问可以从就近的CDN服务器上获取资源,速度比不同的地方都从同一个地方获取速度会快很多 ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="//cdn.com/index_123456.css"> <title>Document</title> <script src="//cdn.com/index_123457.js"></script> </head> <body> </body> </html> ``` ### CDN缓存问题 上面代码中引用了CDN的两个资源,文件资源名称后面都添加了hash值,hash值是根据文件内容进行 计算得出来的,所以当文件更新后文件名称也会自动更新,浏览器也会重新去请求文件 但有一个问题:HTML文件会在CDN服务器上缓存较久时间,所以也会造成HTML文件内的资源更新了,但可能发生 文件还是之前文件的问题,所以我们可以把除了HTML文件的静态资源构建到CDN服务器上,避免CDN服务器的过久 缓存 还有一个问题:如果静态资源都部署到了同一台CDN服务器上,由于浏览器对同一域名的同一时刻请求次数的 限制(并行加载),大约是4-6个左右,所以会造成资源阻塞,所以我们可以资源分散部署到不同的CDN服务器上, 这样可以减少因浏览器请求次数的阻塞而造成的延迟,比如CSS部署到CSS.CDN, JS部署到JS.CDN服务器上, 不过这样的话呢也会造成域名解析时间的加长,可以使用域名预解析来减少解析时间 ``` <link rel="dns-prefetch" href="//js.cdn.com"> ```