首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nginx open_file_cache如何使(清除)一个文件无效

Nginx open_file_cache如何使(清除)一个文件无效
EN

Stack Overflow用户
提问于 2022-12-02 10:00:45
回答 1查看 4关注 0票数 0

例如,我们在open_file_cache中启用了/etc/nginx/nginx.conf

代码语言:javascript
运行
复制
open_file_cache max=10000 inactive=60s;
open_file_cache_valid    60s;
open_file_cache_min_uses 2;
open_file_cache_errors   on;

一些文件/my/file.jpg被更改了,我们知道它在服务器端。示例位置块,按下以下文件:

代码语言:javascript
运行
复制
location ~ (.+)\.[^\.][^\.][^\.]?[^\.]?[^\.]?[^\.]?$
{
    include /etc/nginx/upload.mime.types;
    add_header Access-Control-Allow-Origin *;
    root                               $hostdir;
    try_files                          $uri =404;
    error_page 404 /public/404.png;
}

如何清除缓存服务器端?

EN

回答 1

Stack Overflow用户

发布于 2022-12-02 10:00:45

您可以向文件请求添加特殊的参数识别。如果传递此参数,则需要设置选项open_file_cache_valid 0s。示例:

代码语言:javascript
运行
复制
location ~ (.+)\.[^\.][^\.][^\.]?[^\.]?[^\.]?[^\.]?$
{
    include /etc/nginx/upload.mime.types;
    error_page 419 = @purgecache;
    add_header Access-Control-Allow-Origin *;
    if ($arg_purgecache) {
        #directly set "open_file_cache off;" here not works, don't know why
        return 419;
    }
    root                               $hostdir;
    try_files                          $uri =404;
    error_page 404 /public/404.png;
}

location @purgecache
{
    open_file_cache_valid 0s;
    root                               $hostdir;
    try_files                          $uri =404;
    error_page 404 /public/404.png;
}

在后端端(例如PHP) -只需添加到url purgecache参数即可。但是值需要随机化,以禁用浏览器缓存:

代码语言:javascript
运行
复制
<img src="/my/file.jpg?purgecache=<?=rand(1000,1000000000)?>">

或者只有服务器端清除:

代码语言:javascript
运行
复制
file_get_contents(__DIR__ . "/my/file.jpg?purgecache=".rand(1000,1000000000));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74653910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档