nginx缓存机制(浏览器缓存及nginx缓存)
nginx缓存机制(浏览器缓存及nginx缓存)_浏览器缓存和nginx缓存清理缓存的区别
CTRL+F5强制刷新,文件依旧是旧的
点击刷新按钮或者按F5:
浏览器直接对本地的缓存文件过期,
但是会带上If-Modifed-Since,If-None-Match,
这就意味着服务器会对文件检查新鲜度,
返回结果可能是304,也有可能是200。
用户按Ctrl+F5(强制刷新):
浏览器不仅会对本地文件过期,
而且不会带上If-Modifed-Since,If-None-Match,
相当于之前从来没有请求过,
返回结果是200。
地址栏回车:
浏览器发起请求,
按照正常流程,
本地检查是否过期,
然后服务器检查新鲜度,
最后返回内容。
nginx缓存
默认情况下,nginx 会在一定程度上用作缓存,但是详细的缓存行为取决于各种配置和上下文。nginx 可以通过 proxy_cache 指令以及相关配置来更明确地启用和配置反向代理缓存。缓存响应之前,nginx 检查请求和响应的头,决定哪些可以缓存。
以下是一些决定nginx缓存行为的因素:
-
静态文件:nginx 在处理静态文件(如图片、CSS、JavaScript文件)时,操作系统的文件缓存机制通常会将这些文件的内容缓存起来,使得重复的读取操作可以更快。
-
HTTP头控制:nginx 会根据HTTP头部(如 Cache-Control, Expires)来判断内容是否可以缓存以及缓存多久。
-
反向代理缓存:通过配置文件可以启用nginx的反向代理缓存功能。例如,使用 proxy_cache_path 指令定义缓存路径和参数,使用 proxy_cache 指令启用缓存,并用 proxy_cache_valid 指令设置缓存时间等。
-
FastCGI缓存:对于动态内容,如PHP应用,可以使用 fastcgi_cache 指令来配置缓存。类似地,还有 uwsgi_cache, scgi_cache 等指令用于其他动态内容处理器。
-
浏览器缓存:nginx 的配置同时也可以影响浏览器端的缓存行为,例如通过设置 Cache-Control 和 Expires 头。
这些配置通常需要手动添加到 nginx 配置文件中。如果没有明确配置相关指令,nginx 本身不会对动态内容(如通过代理访问的应用程序生成的HTML页面)做特定的缓存处理。