js 動態引入js文件。Chrome 每次都要重新發出請求,而不是緩存。

题目描述

现在项目中需要引入一个40多M的JS文件,
需要的时候,JS动态添加script标签引入。
但每次Chrome都是重新去获取一次,而不是缓存。然后我测试的Firefox是没问题的。

相关代码

export function asyncLoadJs(url) {
  return new Promise((resolve, reject) => {
    const script = document.createElement('script')
    script.type = 'text/javascript'
    script.src = url
    document.body.appendChild(script)
    script.onload = () => {
      resolve()
    }
    script.onerror = reject
  })
}
asyncLoadJs('./static/vfs_fonts.min.js')
      .then(() => {
      })
      .catch(() => {
      })

浏览器截图

Chrome

图片描述

Firefox

图片描述

请问这是浏览器自身原因吗?

阅读 2.3k
3 个回答

40 M,我滴个乖乖。。。。

你可以在你服务器比如 Nginx 对这个文件设置一下缓存就好了。

检测一下你的谷歌浏览器是否禁用缓存
图片描述

文件是否缓存是由服务器控制的,需要在返回这个文件的时候带上缓存控制header,例如 Cache-Control:max-age=604800,可以缓存一个星期,也可以使用 ETag 和 If-None-Match,或者 Last-Modified 和 If-Modified-Since 进行协商缓存。https://www.infoq.cn/article/...

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