nginx 配置浏览器不缓存文件 每次都会从服务器 请求新的文件

目录

    • 解决问题
    • 方法
    • 说明
  • 测试
    • html环境
    • js
    • 环境
    • 第一步
    • 然后修改内容 打开带有js缓存的页面
    • 强制刷新
  • 配置nginx 每次打开页面都会重新请求index.js 文件
    • 重启nginx
    • 再次修改index.js
  • 总结
  • 设置为全局

解决问题

适用于实时更新数据的,网页
可以让用户每次都是重新请求,新的index.html
防止过期文件,影响用户体验
有时候更新了js 文件 ,但是用户的浏览器则不会立即更新js文件的缓存
从而造成用户体验不佳
优点,每次都能打开最新的页面
缺点 ,会增加服务器负荷


方法

要在 Nginx 中禁用缓存,你需要在相关的 location 配置中添加禁用缓存的指令。通常你可以使用 Cache-Control 和 Pragma 头来达到这个目的。

以下是如何在 Nginx 中禁用缓存的示例配置:

server {# ... 其他配置 ...location / {add_header Cache-Control "no-cache, no-store, must-revalidate";add_header Pragma "no-cache";add_header Expires "0";# ... 其他配置 ...}
}

说明

在这个示例中,我们在根路径的 location 配置中添加了三个头信息:

Cache-Control: no-cache - 表示不缓存
Cache-Control: no-store - 表示不存储缓存
Cache-Control: must-revalidate - 表示客户端必须验证资源是否过期
Pragma 头通常用于向旧版本的 HTTP/1.0 客户端发送指令。添加 “no-cache” 值会防止缓存文件。

Expires 头的值设置为 “0” 表示资源已经过期。

通过这些配置,Nginx 会指示浏览器不要缓存这些文件,而是每次都向服务器发起请求获取最新的内容。完成配置后,记得重新加载 Nginx 以使配置生效。


希望对大家有所帮助

测试

准备一个环境

html环境

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <meta http-equiv="X-UA-Compatible" content="IE=edge">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>写入句子示例</title>  
</head>  
<body>  <div id="sentence"></div>  <!-- 这里引入了一个js 文件 --><script src='./index.js'></script>  
</body>  
</html>

js

document.getElementById("sentence").innerHTML = "这是一句话。"; 

环境

实验浏览器 谷歌

第一步

配置好js 之后
打开页面
在这里插入图片描述
可以看到 js 已经生效了
在这里插入图片描述

然后修改内容 打开带有js缓存的页面

再这里对js 文件进行修改
在这里插入图片描述

在这里插入图片描述
如果时间短的话则不会重新加载index.js
文件
所以这里没有刷新

强制刷新

当我使用 强制刷新或者清理缓存之后 再打开 就已经修改了
在这里插入图片描述

配置nginx 每次打开页面都会重新请求index.js 文件

在域名 的nginx配置文件中添加如下代码即可
在这里插入图片描述

重启nginx

# 检查nginx 配置是否正常
nginx -t
# 重启nginx
nginx -s reload

在这里插入图片描述
在这里插入图片描述

再次修改index.js

在这里插入图片描述

在这里插入图片描述
可以看到 访问到的就是我们修改的内容没有重新请求
在这里插入图片描述

再次修改
在这里插入图片描述
也是请求了新的js 没有使用缓存js
在这里插入图片描述

总结

修改之前 需要全局刷新,才会重新请求index.js 文件
修改之后,不用全局刷新 ,就可以重新请求到最新的 index.js

设置为全局

http {  # ... 其他配置 ...  map $http_host $cache_control_header {  default "no-cache, no-store, must-revalidate";  }  map $http_host $pragma_header {  default "no-cache";  }  map $http_host $expires_header {  default "0";  }  server {  # ... 其他配置 ...  location / {  add_header Cache-Control $cache_control_header;  add_header Pragma $pragma_header;  add_header Expires $expires_header;  # ... 其他配置 ...  }  }  # ... 可能还有其他 server 块 ...  
}

在这里插入图片描述


本章完结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/715896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中的套娃——函数递归

目录 一、什么是递归 1.1.递归的思想 1.2.递归的限制条件 二、举例体会 2.1.求n的阶乘 2.2.顺序打印整数的每一位 2.3.斐波那契数列 三、递归与迭代 一、什么是递归 在学习C语言的过程中&#xff0c;我们经常会跟递归打交道&#xff0c;什么是递归呢&#xff1f;它其实…

LNMP 架构

环境准备&#xff1a;lnmp 需要安装 nginx mysql php 论坛/博客 软件 使用LNMP架构搭建 论坛 1. 关闭防火墙和和核心防护 systemctl disable --now firewalld setenforce 0 2. 编译安装 nginx 安装依赖包 yum -y install pcre-devel zlib-devel gcc gcc-c make 创建…

在Redhat 7 Linux上安装llama.cpp [ 错误stdatomic.h: No such file or directory]

前期准备 在github上下载llama.cpp或克隆。 GitHub - ggerganov/llama.cpp: LLM inference in C/C ​ git clone https://github.com/ggerganov/llama.cpp.gitcd llama.cpp 执行make命令编译llama.cpp make 在huggingface里下载量化了的 gguf格式的llama2模型。 https:/…

每日一练:笔试题复盘-LeeCode原题-判断二叉树两数之和-->找到满足二叉树两数之和的所有路径

用Java实现&#xff0c;给定一个二叉树root和一个值 sum &#xff0c;找到从根节点到叶子节点的节点值之和等于 sum 的路径。 1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点 2.叶子节点是指没有子节点的节点 3.路径只能从父节点到子节点&#xff0c;不能从子…

Compiling from source on UNIX(cmake doxygen ant maven ccache)

前言 源码链接 cmake-3.18.0 https://cmake.org/files/v3.18/cmake-3.18.0.tar.gzdoxygen-1.10.0 https://www.doxygen.nl/files/doxygen-1.10.0.src.tar.gzapache-ant-1.10.8-bin https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.8-bin.tar.gzapache-maven-3…

#WEB前端(表单)

1.实验&#xff1a; form、input、label 登录界面&#xff0c;表单填写界面 2.IDE&#xff1a;VSCODE 3.记录&#xff1a; 4.代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&q…

RedisTemplate中opaForValue.set的注意之处

问题 原本写了一个小项目&#xff0c;想通过redis缓存实现登录退出功能&#xff0c;结果出现了莫名奇妙的问题 代码如下&#xff1a; 报错&#xff1a; 经过多次调试之后我发现是opsForValue.set(key,value,expireTime)这行代码的问题&#xff0c;没有指定过期时间的单位&…

备战蓝桥杯---动态规划之悬线法

Em...属于一知道就会&#xff0c;不知道的话比较难想。 我们先看题&#xff1a; 我们不妨把1抽象成一个平面上的点&#xff0c;因此可以变成这一幅图&#xff1a; 我们假设每一个点被向上牵拉了一根线&#xff1a; 显然&#xff0c;每一条悬线都有可能成为边界限制&#xff0c…

JS值和引用

在javaScript中&#xff0c;数据类型整体上可以分为两大类&#xff1a;基本数据类型和引用数据类型 基本数据类型&#xff1a; string , symbol , number , boolean , undefined , null 引用数据类型&#xff1a; object 1.简单值&#xff08;原始值&#xff09; 由于简单…

职业生涯知识回顾-关于抽象类和接口的思考

抽象类和接口是两个很容易产生疑惑的概念&#xff0c;分不清它们的使用场景&#xff0c;其实只要记住两点就比较好理解&#xff1a; 接口是对行为的抽象抽象类是对子类有哪些属性和行为的抽象 当你需要对一个类有哪些行为进行约束时&#xff0c;使用接口&#xff1b;需要为其…

Bulingbuling - 《历史的教训》 [ The Lessons of History ]

《历史的教训》 两位当代最伟大思想家的著名论文集&#xff0c;汇集了 5000 多年的历史 作者&#xff1a;威尔-杜兰特和阿里尔-杜兰特 The Lessons of History The celebrated collection of essays compiling over 5,000 years of history by two of the greatest thinkers …

Spring Boot项目中不使用@RequestMapping相关注解,如何动态发布自定义URL路径

一、前言 在Spring Boot项目开发过程中&#xff0c;对于接口API发布URL访问路径&#xff0c;一般都是在类上标识RestController或者Controller注解&#xff0c;然后在方法上标识RequestMapping相关注解&#xff0c;比如&#xff1a;PostMapping、GetMapping注解&#xff0c;通…

Siamrpn++论文中文翻译(详细!)

SiamRPN: Evolution of Siamese Visual Tracking with Very Deep Networks SiamRPN&#xff1a;具有非常深度网络的Siamese视觉跟踪的进化 【siamrpn论文地址】 https://arxiv.org/abs/1812.11703 摘要 基于Siamese网络的跟踪器将跟踪表示为目标模板和搜索区域之间的卷积特征…

【STA】多场景时序检查学习记录

单周期路径 建立时间时序检查 在时钟的有效沿到达触发器之前&#xff0c;数据应在一定时间内保持稳定&#xff0c;这段时间即触发器的建立 时间。满足建立时间要求将确保数据可靠地被捕获到触发器中。 建立时间检查是从发起触发器中时钟的第一个有效沿到捕获触发器中时钟后面…

理解大模型的5个关键公式

理解大模型的5个关键公式_哔哩哔哩_bilibili PPT&#xff1a;https://link.excalidraw.com/p/readonly/aBWlNjEckdUlrszwwo6V

基于springboot+vue的社区医院管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

chatgpt-3的文章生成器有哪些?可以批量生成文章的生成器

GPT-3&#xff08;Generative Pre-trained Transformer 3&#xff09;作为人工智能领域的一项重大突破&#xff0c;开启了新一代的文本生成技术。同时市面上也涌现出了一些GPT-3文章生成器&#xff0c;为用户提供了快速、高效地生成各种类型文章的工具。本文将介绍一些中国的GP…

unity-unity2d基础操作笔记(三)0.5.000

目标是:牢记以下137条操作,越级上升到中级阶段 unity-unity2d基础操作笔记(三) 一百零一、如何操作一个游戏物体由多个部分组成的动画一百零二、如何使用rigidbody 2d进行物体移动一百零三、获取游戏物体身上的组件方法一百零四、代码控制物体朝向一百零五、不使用插件,纯…

C#上位机调试经验

1.使用Visual Studio的远程工具 因为上位机软件安装在工控机上&#xff0c;不方便调试。如果直接把代码放在工控机上&#xff0c;又不太安全。 可以在工控机上安装一个Visual Studio的远程工具&#xff0c;把随身带的笔记本电脑通过网线插在工控机上 这样可以在笔记本上使用…

s3cmd工具使用

1. 安装s3cmd工具 [roottestserver01 ~]# yum install s3cmd 2. 配置s3cmd, 按提示输入相应的ak&#xff0c;sk&#xff0c;endpoint等信息 [roottestserver01 ~]# s3cmd --configure 3. s3cmd使用 [roottestserver01 ~]# s3cmd mb s3://abc &#xff08;创建一个桶&am…