项目描述
我用webpack+vue写的项目,一个引导页面里,只有一张大的背景图,点击下一步换另一张图片,在点切换到下一张
代码如下
1 | < div :style = "{backgroundImage: 'url(' + this.image +')'}" ></ div > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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,但是点击下一步,切换图片的时候,仍然屏幕会闪一下,这个怎么优化