Nginx 反复修改后不刷新文件。返回旧的 Last Modified header

标签 nginx caching browser-cache last-modified

我有网络应用程序,并且有可以刷新商店 Logo 的界面。当我刷新 Logo 时,我得到新文件 last-modified标题:

enter image description here

Nginx 返回更正后的更新文件。

之后,我再次更新 Logo 。但是我得到旧的标志和旧的 last-modified ,虽然 Logo url 文件已更改(您可以在 url 末尾看到查询时间戳):

enter image description here

如果我通过浏览器执行直接请求,那么我会得到更新的文件:

enter image description here

这可以通过内容长度在文件大小中看到。

我的图像 nginx 配置是:

location ~* ^.+\.(jpg|jpeg|svg|gif|png)$ {
       expires 10d;     
       try_files $uri @app;
}

我不明白我做错了什么。请帮我。提前致谢

最佳答案

没有足够的信息来确定所遇到问题的根本原因;我还想象所有遇到这个问题的新人都会遇到与上面概述的问题略有不同的问题。

Nginx 有 http://nginx.org/r/if_modified_since指令,您可以查看 ngx_http_not_modified_filter_module.c :: ngx_http_not_modified_header_filter() 中的实现源代码.

一般来说,仅仅因为 URL 有一个更改的 epoch 参数(? 部分以 UNIX 时间作为结尾 slug),并不意味着必须提供新资源,因此,确定 nginx 是错误只是因为前两张图片的 URL 不同,然而 Last-Modified时间相同,不正确。同样,最后的第三张图片列出了 304 Not Modified响应,但没有关于 If-Modified-Since nor If-None-Match 的信息响应中的标题,并且图片的归属也没有任何意义。

关于Nginx 反复修改后不刷新文件。返回旧的 Last Modified header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50814201/

相关文章:

java - 创建通用对象的缓存

python - 我应该为 Flask、uWSGI 和 nginx 提供单独的容器吗?

NGINX 缩略图生成在 Ubuntu 22 中不适用于空格或 %20,但在 Ubuntu 16 中有效 - Nginx 1.23.0 特定

python - Django Admin + FORCE_SCRIPT_NAME + 登录重定向错误

php - html文本框历史

django - Django : Enabling the cached template loader

javascript - 浏览器何时执行缓存中的 JavaScript?

javascript - Service Worker 缓存在 PWA 中转换的 AngularJs 应用程序中的所有文件的最佳方法是什么?

javascript - 不推荐使用 indexedDB 缓存音频文件?

django - 带有Upstart和Nginx的Gunicorn和Django