Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

让 API 也上 CDN 吧

  CDN 一般只用来放前端的一些静态资源,很少有人会把 API 请求的结果放到 CDN 上缓存下来。其实对于很多高频读低频写,或者一些实时性要求不高的数据,完全可以上 CDN。这比起后端的缓存无论是 redis cache 还是 local cache 都要好得多。只是 API 上 CDN 也需要注意一些问题。
  后端自己的缓存本身有许多限制,redis cache 可能会有单点过热的问题,而 local cache 无法存储大量数据。而且即便后端缓存,它只是降低了底层服务和数据库的压力而已,对于服务器的 QPS、连接数、带宽这些东西并没有帮助。如果使用 CDN 缓存,后端服务器的压力就几乎可以忽略,而且如果缓存策略设置的好还可以让数据有缓冲,即便后端服务挂掉,在缓存的时间内大部分用户可以不会受影响。
  让 API 上 CDN 其实很简单,对 CDN 使用「自有源」把 CDN 源站设置到 API 服务的域名上,并且设置上一定的缓存策略即可。但还是有很多需要注意的点。
  首先,使用 CDN 来缓存的内容应该是公共内容,不涉及鉴权等行为。因为 CDN 没有鉴权机制,我们不能把用户隐私的数据直接暴露出去。
  然后所有希望使用 CDN 缓存的 API 数据都应该是相对静态的,不应该是随机生成的内容,也不应该是千人千面的内容。
  内容不能有实时性需求,应该允许一个时间段内容忍缓存的,因为 CDN 上的缓存是无法实时更新,只有等缓存过期之后才更新(虽然一般的 CDN 也有 API 可以主动清缓存,但并不适合用于这个场景)。
  最后,CDN 上不应该放不想泄露的信息,这点是经常被大家忽略的。如果数据在自己的服务器上,我们可以有一套防爬虫的策略。可是上了 CDN 之后就只能任人宰割了,所有人都可以拿走所有数据。
  如果看透了以上这些点,那么 API 上 CDN 当然可以搞起来啦,还等什么?
网名:
34.203.245.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^