惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
D
DataBreaches.Net
Recent Announcements
Recent Announcements
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
Y
Y Combinator Blog
博客园 - 【当耐特】
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
量子位
C
Check Point Blog
F
Fortinet All Blogs
罗磊的独立博客
Last Week in AI
Last Week in AI
GbyAI
GbyAI
L
LangChain Blog
博客园 - 司徒正美

Jiajun的技术笔记

你好,2026! TiDB 源码阅读(六):TiDB Coprocessor 源码解析 性能优化的核心思想 TiDB 源码阅读(五):索引 TiDB 源码阅读(四):AST、逻辑计划、物理计划 CockroachDB Serverless Architecture podman 无故退出 Cursor Control-L (CTRL-L) Keyboard Shortcuts in Terminal Replace docker with podman Using xmonad with xfce4 A RC script for freebsd frpc 自己动手写一个k8s controller AI 会取代你的(编程)岗位吗? 自建DERP服务器提升Tailscale连接速度(使用Nginx转发) 自动升级Docker容器 再读《程序员修炼之道-从小工到专家》 让浏览器下载文件 再读《软件随想录》/《黑客与画家》/《软技能》 HTTP 压力测试中的 Coordinated Omission 2的补码 编程语言中的 context 是什么? flutter macOS 构建出错 Flatpak 使用小记 Golang CAS 操作是怎么实现的 PostgreSQL 当MQ来使用 Clash 结合 工作VPN 的网络设计 使用 PostgreSQL 搭建 JuiceFS PostgreSQL 配置优化和日志分析 有GitHub Copilot?那就可以搭建你的ChatGPT4服务 窗口函数的使用(以PG为例)
Web开发系列(七):缓存,CDN
Jiajun Huang · 2017-10-18 · via Jiajun的技术笔记

缓存

如果有一个GET请求,每秒钟有10k请求,但是10s钟才需要刷新一次,你会让内容服务器不停地处理这类请求吗? 不会,这10秒内的100k次请求带来的计算都是毫无意义的,浪费了CPU资源,并且还可能为内容服务器之后的数据库 带来了不必要的压力。所以我们需要引入一个概念:缓存。

我们在每次处理请求之前,检查一下内存中是否已经产生了结果,如果是,那么直接返回结果,否则,计算,返回结果并且 同时将结果放入内存中以便重复利用。这显然已经不是和计算机操作系统级别的缓存是同一个概念了,web开发中的缓存 通常是指对静态资源,请求响应等的存储以便节省CPU资源。

在实际生产中,我们一般使用Redis作为缓存容器,Redis是一个高性能的K-V数据库,我们把缓存定义好一个key,内容则 放在value中,通常我们还会为key设置过期时间,这样再通过上面的手段便可以大量的节省内容服务器的无用计算。在Redis 火爆之前,一般都会使用memcached,不过我没有用过。

CDN

如果你的客户,或者说请求来源于全球,但是你的网站服务器只在中国有,那么来自美国的用户可能会感觉请求非常的慢, 因为网络质量的问题,一个网络请求可能要跨越太平洋来到中国,带上服务器给出的响应回去。那么有没有什么好办法可以让 全球的用户都得到最快的响应呢?有,把你的服务器部署到全球各个地方,然后通过DNS做负载均衡,解析到最近的服务器, 这样全球的用户的请求都会打到离他最近的地方。这种技术就叫CDN。

一般情况下CDN服务器都会缓存住源服务器的响应,并且定时刷新。但是CDN仅限于可以缓存的内容例如变化不频繁的网页, 如果是频繁变化,或者每个请求得到的响应都不一样,则不适用,例如面向APP或者前端的API接口响应。

参考: