我不明白带缓存的反向代理是如何工作的。
让我们假设缓存是空的。
User1 加载 index.php(动态内容)。没有缓存,所以 Nginx 查询 php 文件。服务器说“欢迎用户 1”。Nginx 使用 md5 校验和存储网页。
User2 加载 index.php。缓存中存储了一个页面,所以我们将这个页面返回给用户。它显示“Welcome User1”,但如果我们调用 php 脚本,它会返回“Welcome User2”。
Nginx如何知道是否再次调用php脚本?我的缓存反向代理工作得很好,返回动态内容,但我想这不仅仅是“魔法”。
是返回标头告诉 Nginx 不要缓存的 php 脚本吗?
响应缓存由 HTTP
Cache-Control
响应标头控制。如果它设置为
no-cache
或private
,那么您的反向代理将不会缓存文档。通常private
用于发送给登录用户的页面;这意味着代理不得缓存文档,但网络浏览器可以缓存该文档。Cache-Control
您可以在RFC 2616 第 14.9 节及以下部分中查看完整的详细信息。