我不明白带有缓存的反向代理如何工作。
我们假设缓存是空的。
User1 加载 index.php(动态内容)。没有缓存,因此 Nginx 查询 php 文件。服务器显示“欢迎 User1”。Nginx 使用 md5 校验和存储网页。
User2 加载 index.php。缓存中存储了一个页面,因此我们将该页面返回给用户。它显示“欢迎 User1”,但如果我们调用了 php 脚本,它将返回“欢迎 User2”。
Nginx 如何知道是否再次调用 php 脚本?我的带缓存的反向代理运行良好,可以返回动态内容,但我想这不仅仅是“魔术”。
它是返回一个标头告诉 Nginx 不要缓存的 php 脚本吗?
答案1
响应缓存由 HTTP 响应标头控制Cache-Control
。
如果将其设置为no-cache
或private
,则您的反向代理将不会缓存文档。通常private
用于发送给已登录用户的页面;这意味着代理不得缓存文档,但 Web 浏览器可以这样做。
您可以Cache-Control
在RFC 2616 第 14.9 节等等。