React 应用的 Nginx 缓存控制
2021/5/30 7:21:09
本文主要是介绍React 应用的 Nginx 缓存控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
典型 React 应用面临的缓存问题,可通过 Nginx 配置进行解决
通用部署
构建应用后,只需使用 Nginx 指向静态文件即可
server { listen 80; root /PATH/TO/APP/build; try_files $uri $uri/ /index.html; }
缓存问题
第一次请求页面的时候,所有页面和资源都是从服务器返回的,如下图所示:
关闭浏览器,重新打开,输入网址,按下Enter,浏览器会从本地缓存获取文件,如下图所示:
即使在以上两次请求之间,页面已更新,浏览器也不会从服务器重新获取更新,因为 disk cache
并没有和服务器进行任何通信
解决思路
如果资源文件有更新,其文件名就会更新,所以资源的缓存不是问题,只需禁用页面的缓存即可
即把以上的
try_files $uri $uri/ /index.html;
替换为
location / { if ( $uri = '/index.html' ) { add_header Cache-Control no-store always; } try_files $uri $uri/ /index.html; }
- 因为所有的页面最终都指向入口文件,所以其实际的
$uri
都是/index.html
no-store
是最严格的Cache-Control
禁用缓存的值,确保浏览器不使用任何缓存- 因为
add_header
连带if
不能直接在server
下,所以加了一层 location
解决效果
这样第二次请求页面时,页面本身不会缓存,但是资源如果没有改变就会缓存,如下图所示:
可以访问以下地址,尝试操作,并查看对应的网络请求:
http://react.chanvinxiao.com
总结
- 浏览器输入地址按 Enter 会出现奇怪的缓存问题
- 通过 Nginx 的
$uri
可以判断请求是否为页面 - 通过 Nginx 的
add_header
可以设置缓存控制头
这篇关于React 应用的 Nginx 缓存控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27Vue3项目实战:从零开始的完整指南
- 2024-11-27Vue CLI多环境配置资料详解
- 2024-11-27Vue3+Vite资料:新手入门教程
- 2024-11-27Vue3阿里系UI组件资料入门教程
- 2024-11-27如何集成Ant Design Vue的图标资料
- 2024-11-27如何集成Ant Design Vue图标资料
- 2024-11-27Vue CLI多环境配置资料:新手教程
- 2024-11-27Vue3的阿里系UI组件资料入门指南
- 2024-11-27Vue3公共组件资料详解与实战教程
- 2024-11-27Vue3公共组件资料详解与实战教程