uni-app长时间页面停留,static文件被当缓存清除导致后续跳转失败
uni-app长时间页面停留,static文件被当缓存清除导致后续跳转失败
当前硬件条件是 小米电视TV
BUG介绍:项目初期启动的时候页面跳转正常,但是当页面长期停留以后,再尝试做路由跳转会失败。
第一次点击后会报一个
请求的页面无法打开:file:///storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/www/__uniappview.html at file:///android_asset/data/dcloud_error.html:41
尝试重复点击的情况下会报一个
Waiting to navigate to: /pages/xxxxxx, do not operate continuously: /pages/xxxxxx.
其他情报:
在长时间停留再做操作后,会发现原本放在static文件夹下的静态资源文件无法加载成功,是否是长期不操作或者就是长期运行,android会把uniapp下的static资源文件清空导致项目报错。
可能是系统清理了
我也怀疑是系统清理了,拿怎么样追加配置防止系统清理呢?
回复 哼哼可帅: 同问,解决了吗?
解决了吗?
我这里也遇到了相同的问题,请问解决了吗
哎,nvue问题太多了
这个解决了吗,刷着刷着就点不进去了,Waiting to navigate to: /pages/news/detail/detail, do not operate continuously: /pages/news/detail/detail.
太吐血了
24年了还没解决吗
在uni-app中,如果页面长时间停留导致static文件被当缓存清除,从而造成后续跳转失败的问题,可以通过多种方式来解决,这里主要介绍几种常见的技术手段,包括服务端的缓存控制、前端资源版本控制和uni-app自身的配置优化。以下是一些代码示例和配置方法:
1. 服务端设置缓存控制头
确保服务端正确设置缓存控制头(Cache-Control),避免文件被浏览器错误地缓存或清除。
示例(以Nginx为例):
server {
location /static/ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
}
这段配置指定了static目录下的文件将被缓存一年,并且标记为不可变,这有助于减少缓存失效的问题。
2. 前端资源版本控制
通过在资源文件名中加入版本号或哈希值,确保每次加载的都是最新的资源。
示例(在uni-app中使用webpack打包):
在vue.config.js
中配置输出文件的哈希值:
module.exports = {
configureWebpack: {
output: {
filename: '[name].[hash].js',
chunkFilename: '[name].[hash].js'
}
}
}
这样,每次构建时,资源文件都会带上一个独特的哈希值,避免了缓存问题。
3. uni-app配置优化
在manifest.json
中,可以配置一些与缓存相关的选项,尽管uni-app本身对static文件的缓存控制有限,但可以通过配置页面路由来优化用户体验。
示例(在manifest.json中配置页面路由):
{
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页",
"enablePullDownRefresh": false,
"disableScroll": false
}
},
// 其他页面配置...
],
"tabBar": {
"list": [
{
"pagePath": "pages/index/index",
"text": "首页"
},
// 其他tab配置...
]
}
}
虽然这里并未直接解决static文件缓存问题,但良好的路由配置可以提升用户体验,减少因长时间停留导致的页面问题。
4. 强制刷新static资源
在某些情况下,可以通过在跳转前强制刷新static资源来解决问题,但这通常不是最佳实践,因为它会影响用户体验。
示例(在页面中通过编程方式刷新):
// 在跳转前,通过修改URL参数来强制刷新资源
const currentPath = window.location.pathname + '?' + new Date().getTime();
window.location.href = currentPath;
这种方法应谨慎使用,因为它会导致页面重新加载,可能带来不必要的延迟。
总之,解决uni-app中static文件缓存问题,需要综合考虑服务端配置、前端资源管理和uni-app自身的优化策略。