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

打印 上一主题 下一主题

主题 998|帖子 998|积分 2996

办理标题

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

方法

要在 Nginx 中禁用缓存,你需要在相关的 location 设置中添加禁用缓存的指令。通常你可以使用 Cache-Control 和 Pragma 头来达到这个目标。
以下是如何在 Nginx 中禁用缓存的示例设置:
  1. server {
  2.     # ... 其他配置 ...
  3.     location / {
  4.         add_header Cache-Control "no-cache, no-store, must-revalidate";
  5.         add_header Pragma "no-cache";
  6.         add_header Expires "0";
  7.         # ... 其他配置 ...
  8.     }
  9. }
复制代码

阐明

在这个示例中,我们在根路径的 location 设置中添加了三个头信息:
Cache-Control: no-cache - 表示不缓存
Cache-Control: no-store - 表示不存储缓存
Cache-Control: must-revalidate - 表示客户端必须验证资源是否过期
Pragma 头通常用于向旧版本的 HTTP/1.0 客户端发送指令。添加 “no-cache” 值会防止缓存文件。
Expires 头的值设置为 “0” 表示资源已颠末期。
通过这些设置,Nginx 会指示浏览器不要缓存这些文件,而是每次都向服务器发起请求获取最新的内容。完成设置后,记得重新加载 Nginx 以使设置生效。

希望对各人有所资助
测试

预备一个情况
html情况

  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">  
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">  
  7.     <title>写入句子示例</title>  
  8. </head>  
  9. <body>  
  10.     <div id="sentence"></div>  
  11.     <!-- 这里引入了一个js 文件 -->
  12.     <script src='./index.js'></script>  
  13. </body>  
  14. </html>
复制代码
js

  1. document.getElementById("sentence").innerHTML = "这是一句话。";
复制代码
情况

实验浏览器 谷歌
第一步

设置好js 之后
打开页面

可以看到 js 已经生效了

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

再这里对js 文件进行修改


如果时间短的话则不会重新加载index.js
文件
以是这里没有刷新
强制刷新

当我使用 强制刷新大概清理缓存之后 再打开 就已经修改了

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

在域名 的nginx设置文件中添加如下代码即可

重启nginx

  1. # 检查nginx 配置是否正常
  2. nginx -t
  3. # 重启nginx
  4. nginx -s reload
复制代码


再次修改index.js



可以看到 访问到的就是我们修改的内容没有重新请求

再次修改

也是请求了新的js 没有使用缓存js

总结

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

  1. http {  
  2.     # ... 其他配置 ...  
  3.   
  4.     map $http_host $cache_control_header {  
  5.         default "no-cache, no-store, must-revalidate";  
  6.     }  
  7.   
  8.     map $http_host $pragma_header {  
  9.         default "no-cache";  
  10.     }  
  11.   
  12.     map $http_host $expires_header {  
  13.         default "0";  
  14.     }  
  15.   
  16.     server {  
  17.         # ... 其他配置 ...  
  18.   
  19.         location / {  
  20.             add_header Cache-Control $cache_control_header;  
  21.             add_header Pragma $pragma_header;  
  22.             add_header Expires $expires_header;  
  23.             # ... 其他配置 ...  
  24.         }  
  25.     }  
  26.   
  27.     # ... 可能还有其他 server 块 ...  
  28. }
复制代码


本章完结

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表