网络与协议 · 9/72
1. Ajax、Axios、Fetch 对比 2. Ajax 原理 3. Ajax 技术与实现 4. 常见的应用层协议 5. 浏览器缓存的存储位置 6. 从输入 URL 到页面显示的过程 7. Cache-Control 常见配置值 8. CDN 工作原理 9. 为什么推荐将静态资源放到 CDN 上 10. Cookie 的弊端 11. Cookie 的 Secure 属性设置 12. CORS 请求携带身份凭证的方法 13. CORS 跨域原理 14. 复杂请求预检检查内容 15. CORS 预检请求 16. CORS简单请求的条件 17. 简单请求为何无需预检 18. DNS 域名解析与网络请求路由 19. 什么是跨域 20. 什么是 DNS 劫持? 21. DNS 预解析优化网页加载速度 22. DNS 解析过程与优化 23. URL 参数为什么需要 encodeURIComponent 转码 24. Last-Modified 和 ETag 的区别 25. Fetch 发送两次请求的原因 26. 正向代理与反向代理 27. 前后端通信方式 28. GET请求能否上传图片 29. GET 请求的传参长度限制 30. HTTP 缓存策略 31. GET 与 POST 的区别 32. HTTP状态码301与302的区别 33. HTTP 数据传输 34. HTTP 队头阻塞 35. HTTP 请求头和响应头的重要字段 36. HTTP发展历程 37. HTTP与HTTPS总结 38. HTTP 和 HTTPS 的区别 39. HTTP 报文结构与状态码 40. HTTP Keep-Alive 机制 41. HTTP管道机制的作用 42. HTTP协议优缺点 43. HTTP 重定向状态码 301/302/303/307/308 44. HTTP 请求方法 45. HTTP 协议版本演进 46. HTTP与TCP的区别 47. HTTP/2 多路复用原理 48. HTTPS 协议的缺点 49. HTTP/3 如何保证传输可靠性 50. HTTP/2 的改进 51. HTTPS 加密原理 52. 什么是负载均衡? 53. Nginx 负载均衡调度算法 54. Nginx 是什么 55. 对象存储 OSS 是什么 56. OPTIONS 请求方法及使用场景 57. 轮询与 WebSocket 对比 58. HTTPS 中 SSL 的 OSI 层位置 59. SSL连接恢复 60. 强缓存和协商缓存 61. TCP 三次握手与四次挥手 62. TCP三次握手中的数据传输 63. TCP 和 HTTP 请求的关系 64. TCP/IP 协议 65. TCP 如何判断丢包 66. TCP 与 UDP 的区别 67. WebSocket 的 Handshaking 握手过程 68. TLS 1.3 相比 TLS 1.2 的改进 69. URI、URL、URN 的区别 70. WebSocket 心跳机制 71. WebSocket 协议原理 72. XML与JSON对比

为什么推荐将静态资源放到 CDN 上

了解 CDN 的工作原理和使用静态资源 CDN 的优势

问题

为什么推荐将静态资源放到 CDN 上?

解答

静态资源与动态资源

静态资源是指在不同请求中访问到的数据都相同的文件,例如图片、视频、CSS、JavaScript、字体文件、安装包等。

动态资源是指在不同请求中访问到的数据不相同的内容,例如 API 接口返回的数据、数据库查询结果、服务端渲染的页面等。

CDN 是什么

CDN(Content Delivery Network,内容分发网络)是由分布在不同区域的边缘节点服务器群组成的分布式网络。

CDN 加速的本质是缓存加速。它将服务器上的静态内容缓存在 CDN 节点上,当用户访问这些静态内容时,无需访问源站服务器,就近访问 CDN 节点即可获取相同内容,从而达到加速效果,同时减轻源站压力。

需要注意的是,CDN 的缓存加速不适用于动态内容。因为动态内容每次都需要服务器实时生成,CDN 节点只能转发请求回源站,无法提供加速效果。

CDN 的优势

1. 加速网站访问

CDN 覆盖全球线路,通过与运营商合作,在全国骨干节点部署边缘存储节点,解决跨运营商、跨地域访问延迟问题,让用户就近获取内容。

2. 提升网站安全性

CDN 的负载均衡和分布式存储技术可以加强网站可靠性,防御大部分互联网攻击事件,为网站提供安全保障。

3. 异地容灾备援

当某个服务器发生故障时,系统会自动调用其他临近的健康节点提供服务,实现接近 100% 的可用性。

4. 节约成本

使用 CDN 无需购买多地服务器、处理服务器镜像同步、维护技术团队,大幅降低人力和运维成本。

5. 专注核心业务

CDN 厂商通常提供 7x24 运维监控支持,让开发团队可以将更多精力投入到核心业务开发上。

CDN 工作原理

当用户访问使用了 CDN 的网站时,完整流程如下:

  1. 用户在浏览器输入网站域名
  2. 本地 DNS 将域名解析权交给 CDN 专用 DNS 服务器
  3. CDN DNS 服务器返回全局负载均衡设备的 IP 地址
  4. 用户向全局负载均衡设备发起请求
  5. 全局负载均衡设备根据用户 IP 和请求内容,选择合适的区域负载均衡设备
  6. 区域负载均衡设备综合考虑以下因素选择最佳缓存服务器:
    • 距离用户最近的服务器
    • 拥有所需内容的服务器
    • 当前负载较低的服务器
  7. 返回缓存服务器 IP 地址给用户
  8. 用户向缓存服务器请求内容,如果该服务器没有缓存,则向上级服务器或源站获取内容

没有 CDN 时的访问流程

传统的 B/S 架构网站访问流程:

  1. 用户在浏览器输入域名
  2. 浏览器向本地 DNS 服务器请求域名解析
  3. 本地 DNS 返回缓存结果,或递归查询整个 DNS 系统获取解析结果
  4. 浏览器获得服务器 IP 地址
  5. 浏览器直接向源站服务器请求内容
  6. 服务器返回内容给浏览器

这种方式下,所有用户都直接访问源站,导致源站压力大、跨地域访问慢、容易出现单点故障。

关键点

  • CDN 通过缓存静态资源到边缘节点,让用户就近访问,减少延迟和源站压力
  • CDN 只适用于静态资源加速,动态内容仍需回源获取
  • CDN 通过全局和区域负载均衡,智能选择最优节点为用户提供服务
  • 使用 CDN 可以提升访问速度、增强安全性、降低成本、实现异地容灾
  • CDN 的核心是将内容分发到离用户更近的节点,本质是用空间换时间