HTTP实用指南-笔记 | 豆包MarsCode AI刷题

87 阅读3分钟

什么是HTTP

HTTP(Hyper Text Transfer Protocol) 超文本传输协议

HTTP 的基本工作原理是客户端(通常是 web 浏览器)向服务器发送请求,服务器接收到请求后,返回相应的资源。这些资源可以是文本,网页、图像、音频文件、视频文件,流等。

HTTP 使用了客户端-服务器模型,其中客户端发送请求,服务器返回响应。

以微博为例,以下是微博网站可能采用的一些常见缓存策略:

1. 资源的缓存策略(HTTP 缓存)

微博会通过 HTTP 头部控制浏览器缓存静态资源(如 CSS、JavaScript、图片等),常见的缓存控制字段包括:

  • Cache-Control: 控制缓存的有效性。常见值包括:

    • max-age=<seconds>:指定资源在浏览器缓存中的存活时间(秒)。如 max-age=3600 表示资源可缓存 1 小时。
    • no-cache:表示资源不能被缓存,需要每次从服务器验证。
    • public:允许所有缓存(包括 CDN 和代理服务器等)。
    • private:仅允许浏览器缓存,不允许 CDN 等共享缓存。
  • Expires: 指定缓存过期的时间(通常以 GMT 时间格式表示)。如果存在此字段,Cache-Controlmax-age 优先级较高。

  • ETagLast-Modified:用于缓存的条件请求,当资源发生变化时,服务器会返回一个唯一标识符(ETag),浏览器会根据这个标识符判断资源是否需要重新加载。

2. 动态内容的缓存策略

微博等社交网站的动态内容通常依赖于 API 请求来获取数据。以下是一些可能的缓存策略:

  • API 响应缓存:微博可能会使用 HTTP 缓存策略来缓存 API 响应,尤其是那些不频繁变化的数据(如某些公共信息)。对于频繁变化的内容(例如微博实时动态),通常会减少缓存时间,甚至不缓存。
  • Stale-while-revalidate:有些资源在缓存过期后,浏览器可能会继续使用已缓存的版本,直到新的版本从服务器加载完毕,这有助于避免请求延迟对用户体验的影响。

3. 内容分发网络 (CDN)

微博作为一个大规模的社交平台,可能会利用 CDN 来分发静态资源。通过将资源缓存到靠近用户的边缘节点,可以减少资源加载的延迟,提高访问速度。

  • CDN 缓存策略:微博可能会通过 Cache-Control 和 Expires 等字段来控制 CDN 上资源的缓存策略。例如,静态资源如图片、视频文件可能会被缓存较长时间,而页面内容则可能会有较短的缓存时间。

4. HTML 页面缓存

对于微博的网页,浏览器通常会缓存一些 HTML 页面或其中的片段,但对于包含动态内容的页面(例如用户的消息流),缓存时间通常较短,甚至不进行缓存。这是因为微博的动态内容非常依赖用户交互,且实时性要求较高。

  • No-store: 某些页面可能会设置 Cache-Control: no-store,意味着这些页面的内容绝不应被缓存。比如登录页面、支付页面或包含私人数据的页面。

5. Service Workers 与离线缓存

如果微博实现了 Progressive Web App(PWA)或类似的离线功能,它可能使用 Service Workers 来缓存资源,使得用户即使在没有网络连接时,也能够访问部分内容。这些缓存通常包括静态资源和某些API响应,并且会通过 JavaScript 编写的缓存逻辑进行精细控制。

总结

微博的缓存策略主要通过以下几种方式来提升性能:

  • 使用 HTTP 头(如 Cache-ControlExpires 等)来控制资源的缓存。
  • 对于动态内容,使用 API 响应缓存和合理的缓存失效时间。
  • 通过 CDN 加速静态资源的加载。
  • 可能使用 Service Worker 来实现离线功能。