只有 26% 的人知道 CDN 意义!

今天我们用 2 分钟来改变这一点。

从最简单的层面来说,CDN 只是一组地理上分布的服务器。

这些服务器缓存的内容更接近最终用户(像你和我这样的人),以便尽快满足数据请求。

例如,请参见下图,其中多个地理分布的 CDN 支持单个源服务器。

Netflix、亚马逊和社交媒体巨头等公司严重依赖 CDN 进行内容分发。

但不要将 CDN 视为 Web 主机(又称源服务器)的替代品。

您的应用程序仍然需要网络托管。

然而,传统的托管服务不足以满足现代网站的需求:

- 由于数据传输成本,成本可能会飙升。

- 缺乏处理病毒式内容的规模。

- 由于地理距离而导致高延迟。

👉 CDN如何解决这些问题?

有两种方法:

[1] 互联网交换点

IXP 是不同互联网提供商相互连接的地方。

它们是挤满网络交换机的物理位置,用于在不同位置之间路由流量。网络。

像 Cloudflare 这样的 CDN 提供商将服务器放置在这些 IXP 上。这可以帮助他们:

- 减少运输时间

- 做出明智的路由决策。

[2] CDN数据中心

CDN 提供商还在全球的战略地点维护数据中心。

例如,Cloudflare 在遍布全球的 310 个城市拥有 CDN 服务器。

这些数据中心帮助 CDN 缓存数据更接近最终用户。

👉 CDN如何加载内容?

这是一个典型的工艺流程:

[1] 当用户请求网页时,请求会传输到最近的 CDN 服务器

[2] CDN服务器向源站请求用户正在寻找的内容。

[3]源端响应CDN的请求。

[4] CDN缓存网页并响应用户。

[5] 对同一网页的未来请求由边缘服务器直接处理。

查看下图:

👉虽然 CDN 很棒,但它们也有一些缺点:

- CDN数据和源服务器之间可能存在不一致

- 有关数据存储的监管或合规性问题

- 对第三方实体(即 CDN 提供商)的依赖。

👉那么 - 您是否在您的项目中使用或计划使用 CDN?

如果是,您认为它们有用还是有问题?
全部评论

相关推荐

2025-11-07 05:10
门头沟学院 Java
1. Linux 是怎么调度线程的2.说一下Go里的panic和defer 的执行顺序3.如果一个函数里发生了panic,然后在defer里面又再 panic一次,会怎么样4.如果defer里触发panic,它后面还会执行吗5.Go协程和Java线程你能说说本质上的区别是什么6.为啥协程开销小,线程开销大呢7.Go的调度模型你了解吗8.从浏览器地址栏输入一个https://...com整个过程都发生了什么9.HTTPS 除了加密之外,它还保障了哪些安全特性10.HTTPS 里对称密钥是怎么来的?你说它能生成,那它为啥能‘一致’11.TLS 握手里的密钥是怎么派生出来的,用到什么算法12.有些网站明明是HTTPS,浏览器还是提示它‘不安全’?可能是什么原因13.讲一下CSRF 攻击吧?它的原理和攻击路径14.刚才提到了Referer检查能防 CSRF,你觉得这个机制可靠性如何?攻击者能不能在 JS 里伪造 Referer 绕过15.除了Referer,还有什么HTTP请求头是不能被 JS 随便修改的16.说几个浏览器层面的 forbidden headers比如哪些不能被JS 改?17.Origin和Referer的区别,实际生产中哪个更靠谱18.刚才说Redis用在幂等性处理上,我一定要去加Redis锁或者这种分布式锁么?有必要么,我不加锁行不行19.用Redis或ZK 做分布式锁,性能其实不一定比MySQL的行锁好,你知道为什么么20.那既然我性能上不如行锁,各方面都不如是不是可以不用加分布式锁21.TCP 的 backlog 是什么,backlog满了之后发生了什么22. 三次握手为什么是三次吗?两次不行吗23. tIME_WAIT 出现在哪?为啥客户端要进入 TIME_WAIT?它具体起什么作用?24..手撕:给定一组节点分数(中序遍历为 1 到 n),要求构建一棵二叉树,使得整棵树的“加分”最大。每个子树的加分计算为:左子树加分 × 右子树加分 + 根节点分数(若子树为空,则其加分为 1)。输出最高加分值和该最优树的前序遍历序列。
点赞 评论 收藏
分享
2025-11-28 11:14
已编辑
腾讯_WXG_客户端开发(准入职员工)
字节客户端,流转番茄、剪映、抖音、飞书等多个部门,历经十三次面试,终于拿下。记录下面经:一面(1h20min)https://www.nowcoder.com/feed/main/detail/ee15d1b2fb2f4d459b0938dabd7e1922二面(45min)https://www.nowcoder.com/feed/main/detail/a9f0d490ebb1472bbffb16575daf4902三面(1h30min)1. 自我介绍(项目)2. 项目说一半打断、提问项目3. 鸿蒙开发感受如何,和安卓相比有什么区别4. 你更倾向鸿蒙还是安卓开发(当然是安卓,鸿蒙的ide巨落后)5. 鸿蒙开发安装包有哪些东西(不会)6. 安卓应用升级到鸿蒙数据是怎么迁移的(不会)7. 开始问java,接口和抽象类的区别8. 接口的应用场景说个你使用到的例子(不同请求的网络成功失败回调)9. 这样会导致接口膨胀(回答了跟抽象类的对比,共性提取和复用。感觉自己答非所问了??)10. 接口能继承抽象类吗?11. 四大引用说一下、以及各自的应用场景12. 弱引用常用来做什么(检测和防止内存泄露)13. 弱引用对象被回收了,那调用对象的方法或成员变量会导致状态异常?(判空)14. 弱引用在业务上的使用多吗?(掰扯了很久,没明白想问什么,最后回答非必要不使用)15. gc说一下(引用计数、可达性分析等)16. gc算法说一下17. 这些算法各自的特点说一下18. 现代jvm是如果利用各种gc算法的(忘了,提示分代,应该是根据不同分代选择不同算法)19. 你说到新生代,它是使用什么算法(忘了,沉默)20. 跳过,gc的过程和gc的缺陷21. 引用计数可能有什么问题(循环引用)22. 循环引用具体说一下23. HashMap和HashTable、LinkedHashMap的区别说一下(答了线程安全和数据结构实现的区别)24. HashTable线程安全的原理是什么25. 还有哪些线程安全的容器(ConCurrentHashMap)26. 它和HashTable的区别是什么(答了实现线程安全的方式不同)27. 你提到CAS,具体说一下28. CAS可能出现什么问题(ABA问题)29. 怎么解决(版本号、时间戳)30. Handle的Message有哪些(不懂,答了post的Runnable和sendMessage的Message)31. 它们是同步的吗(依然不知道想问什么,答了MainLooper的消息队列通过消息入队顺序处理,除非是延时消息)32. Looper 是如何保证线程唯一性的?(答了ThreadLocal和具体的存储过程)33. 事件分发机制说一下34. 点击事件的事件类型和执行顺序说一下35. 手指按到屏幕上,再滑动,此时会滑动吗?内部的事件类型的事件传递过程是怎样的?滑动事件在哪里被处理?36. 给出一段代码:分析代码意图和错误不看后面的省略号,执行完结果是什么?会出现什么问题?怎么解决?(倒序)增强for可以吗?(可以,内部使用迭代器实现)这里的==有什么问题?equals和==的区别?它和hashcode的应用?37. 环形链表II解释思路?如果不考虑空间复杂度你会使用什么容器?(脱口而出map)map的键是什么?(想起来使用set就行)set有判断包含元素的方法吗?(contains)面试评价:整体表现都挺不错的,包括项目、实习、面试表现总体感受:大概答出90%,虽然面试时慌得一批,但是面完回想还是基本都答出来了,过四面(1h15min)1. 手写HashMap,只能使用数组、链表(并对各种机制进行深度拷打,基本所有hashmap底层的设计都进行了拷打,比如容量设置考量,扩容具体过程,为什么是2倍、先插入再判断扩容还是先扩容再插入等等)2. SQLite使用什么数据结构3. B+树有什么特点4. 为什么不使用二叉查找树5. 数据库查询优化思路是什么6. 索引什么情况会失效7. Java的static说一下8. 静态变量存在哪个地方?在什么时候分配内存?什么时候初始化?初始化和准备哪个先?9. int数据存在哪个地方(分情况讨论)10. 静态代码块什么时候执行11. 类初始化做了什么12. 类加载和初始化哪个先执行13. 进程和线程的区别14. 进程调度算法有哪些15. 时间片轮转说一下16. 时间片轮转和先来先服务的区别,怎么选择?17. 和高响应比优先比呢?18. Okhttp的连接复用机制说一下19. 连接复用的优点和缺点20. SparseArray的原理?它的key怎么来的?(应该是要问避免hashmap的Integer装箱的开销,可惜很久前看的,忘了很多)总结:压力最大的一次面试,挂五面(1h05min)1. 自我介绍2. 项目介绍3. 安卓层是怎么执行c++代码的4. 包大小的减少是从哪些方面提升用户使用体验的5. MVP和MVVM的区别6. 倾向使用哪种架构,哪个更易于维护7. ArrayList和LinkedList的区别8. 泛型9. 运行时能获取到具体的泛型信息吗10. ==和equals的区别11. kotlin的==和equals12. Kotlin如果同一个类两个对象都有一个String字段且值相同,==返回什么(false,默认比较的是地址)13. data class14. 如果data class的两个对象内部属性一样,==返回什么(true,数据类内部自动重写了equals)15. 给一段多线程并发代码,判断打印的内容16. 合并两个升序链表(写完迭代问还有别的方式实现吗->讲递归的实现)过六面(1h40min)1. 自我介绍2. 项目介绍3. java和Kotlin调用jni有什么不一样4. 在一个很简单的需求扯了很久(大概率是挂的原因,后续调整了实习需求介绍的优先级)5. UTF - 8是几个字节(英文1个,中文3个)6. 如何识别字节流截取的位置(保证截断的位置不会导致尾部字符的不完整或乱码)7. join联表为什么能解决相关子查询8. 怎么自动化识别和记录数据库查询慢的语句9. java垃圾回收算法10. 判断垃圾对象的方法,优缺点对比11. gc使用了哪种判断垃圾方法,还是两种都用12. 排查内存泄漏的方法13. LeakCanary的原理14. 常见的内存泄漏场景15. 内存泄漏的原理,为什么会导致泄漏16. 匿名对象一定会持有外部类的引用吗17. 图片的大小是如何确定的18. 图片的像素是怎么决定的19. https的加密过程是怎么样的20. 验证证书的过程21. 算法:平衡二叉树总结:没什么问题,都挺好的。但是挂篇幅限制后续面经看下篇
字节求职进展汇总
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务