HTTP 缓存与 304 协商
如果页面每次刷新都重新下载相同的 CSS、图片和字体,用户会觉得慢,服务器也会承担不必要的流量。HTTP 因此提供了一套缓存协商机制,让浏览器可以判断“本地缓存还能不能继续用”。
常见流程有两类:
-
强缓存:直接使用本地资源
服务器可以通过响应头设置有效期,例如:
Cache-Control: max-age=600在这 600 秒内,浏览器不会向服务器发起新请求,而是直接读取本地缓存。
-
协商缓存:问过服务器再决定是否重新下载
如果资源缓存已经过期,浏览器可以把资源的标识带给服务器,让服务器判断内容是否变化。
第一次请求时,服务器通常会返回资源指纹,例如:
ETag: "abc123hash"缓存过期后,浏览器再次请求时会带上:
If-None-Match: "abc123hash"如果资源确实没有变化,服务器只需返回:
HTTP/1.1 304 Not Modified并且不再携带响应体。浏览器收到
304后,就会继续复用本地已有缓存。这样既保证了内容正确,也节省了网络带宽。
现代 Web 部署基础设施
在真实生产环境中,用户访问的网站往往不是单台服务器,而是一组经过分层处理的基础设施。请求通常会依次经过入口、代理、负载均衡、后端服务以及数据存储等组件。
常见组件包括:
- 反向代理(Reverse Proxy,如 Nginx):站在应用服务前方,统一对外暴露
80/443端口,负责 TLS 加密卸载、请求路由和初步防护。 - 负载均衡器(Load Balancer):把大量并发请求分配给多个应用服务器实例,避免单台机器被压垮。
- CDN(内容分发网络):在全球边缘节点缓存图片、视频、脚本等静态资源,让用户从离自己更近的节点获取内容。
- WAF(Web 应用防火墙):识别并拦截 SQL 注入、XSS 等常见 Web 攻击,为应用提供一层安全过滤。


