项目描述
我用webpack+vue写的项目,一个引导页面里,只有一张大的背景图,点击下一步换另一张图片,在点切换到下一张
代码如下
<div :style="{backgroundImage: 'url(' + this.image +')'}"></div>const cacheImg = {}
export default {
data () {
image: '',
mode: 1,
step: 1,
cacheImg: {}
},
created () {
const result = await this.loadImg(this.mode, this.step)
this.image = result
},
methods: {
async loadImg (mode, step) {
const result = await import(`../assets/img/feature-guide${mode}_${step}.png`)
this.setCacheImg(`${mode}_${step}`, result.default)
return Promise.resolve(result.default)
},
setCacheImg (key, value) {
cacheImg[key] = value
const link = document.createElement('link')
link.as = 'image'
link.rel = 'prefetch'
link.href = value
document.head.appendChild(link)
},
}
}思路是想利用prefetch做预加载,每次点击都import()当前图片的下一张图片,并将结果缓存到cacheImg对象中,并动态写入link标签。当真正请求当前图片的下一张图片的时候,去cacheImg对象中去找,使图片从prefetch中的缓存拿到。

有几个问题
在webpack中利用注释的prefetch,是不是只支持组件,不支持图片,所以我才手动写入link标签
2.不知道我这么做,是否正确,但是我看确实是走的prefetch的缓存
3.我上图红框中,显示白页图标的,打开response,显示Failed to load response data: No data found for resource with giver identifier。这是为什么,我这图片加载进来了嘛。
4.虽然做了prefetch,但是点击下一步,切换图片的时候,仍然屏幕会闪一下,这个怎么优化