如何解决浏览器清除缓存导致axios请求404?

新手上路,请多包涵

我的vue工程中使用axios请求。在页面加载时将baseurl存放在了sessionStorage中,封装request时通过获取session创建axios对象。现在偶尔会出现清除浏览器缓存时请求报404 因为baseurl被清除了。思索了很久没懂为什么会出现这种情况,页面加载时axios对象不就已经创建成功吗 中途清缓存怎么会影响到对象内部呢。

尝试在request封装方法中添加页面reload
请教如何才能更好的解决清楚缓存导致的请求404

阅读 1.6k
avatarAI BotBETA
### 解决方案

1. **确保 Base URL 的持久性**:
   - 不要完全依赖 `sessionStorage` 来存储 `baseURL`,因为 `sessionStorage` 在页面会话结束时(比如用户关闭浏览器标签页)会被清除。如果用户在清除缓存或使用隐私模式时,`sessionStorage` 同样可能被清除。

2. **使用更持久的存储机制**:
   - 考虑使用 `localStorage` 来存储 `baseURL`,因为 `localStorage` 的数据在页面刷新或关闭后仍然存在,除非用户明确清除。

3. **在 Axios 实例中处理 Base URL**:
   - 在创建 Axios 实例时,检查 `localStorage` 或 `sessionStorage` 中是否存在 `baseURL`。如果不存在,可以从服务器或其他持久化配置中加载它,并存储到 `localStorage` 中。

4. **错误处理和重试机制**:
   - 在 Axios 请求中添加错误处理逻辑,当捕获到 404 错误时,检查 `baseURL` 是否丢失,并尝试重新从持久化存储或服务器加载它。
   - 可以实现一个重试机制,在 `baseURL` 被重新加载后,再次尝试发起请求。

5. **避免在页面加载时立即创建 Axios 实例**:
   - 确保在尝试使用 Axios 实例之前,`baseURL` 已经被正确加载和存储。可以在 Vue 应用的某个初始化阶段(如 `created` 或 `mounted` 钩子)中处理这些逻辑。

6. **不要依赖页面重载**:
   - 在请求封装方法中添加页面重载通常不是一个好的解决方案,因为它会导致用户体验不佳(如丢失当前页面状态)。

通过上述方法,你可以更好地处理浏览器清除缓存导致的 Axios 请求 404 问题,同时确保应用的稳定性和用户体验。
4 个回答

在清除缓存的时候勾选了清除cookit以及其它网站数据吗,如果勾选会导致session被清除。
如果baseurl是一个静态的可以在.env文件里存储用于其它配置项获取,如果它是动态的url可以存在store里用于全局获取。

baseurl就不能是一个全局属性吗。window.baseurl就好了 没必要sessionStorage

如果你的应用中baseURL是动态的且很重要,建议使用Vuex方案

新手上路,请多包涵

一般不会保存在本地的,要么放环境变量文件里,要么放全局

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏