问题描述:
vue项目开发中,加载静态文件,静态文件存放的地址是在static文件下,也就是说打包的时候是不会一起打包的。首次加载js文件时正常200返回,请求头中的Content-Type:application/javascript,
刷新页面再次加载改文件 304,Content-Type:text/html
基本原理
vue中 静态文件引用注意事项
1.assets文件夹与static文件夹的区别
区别一:assets文件是src下的,所以最后运行时需要进行打包,而static文件不需要打包就直接放在最终的文件中了
区别二:assets中的文件在vue中的template/style下用…/这种相对路径的形式进行引用,在script下必须用@import的方式引入,而static下的文件在.vue中的任何地方都只要使用…/这种相对路径的方式引入
2.vue如何引入其它静态文件
1.src目录下的资源只能import或require。
2.想静态引入的话,建立一个与src同级的目录例如static,然后把静态资源放入该文件夹下,引入路径如下:./static/…
304
HTTP状态码304是指请求资源未发生变化,在客户端缓存有效期内,服务器返回304响应码,让浏览器直接使用浏览器缓存中的数据。
问题成因
我的理解就是浏览器缓存,因为static文件不参与vue的打包,静态文件路径不会发生改变,导致浏览器发现短时间内请求了相同的静态文件,请求浏览器就直接给拒了,让用上次返回的数据
解决办法
- 告诉浏览器我没有缓存,我不用缓存,给我新的,设置请求头中的’Cache-Control’为’no-store’
- 设置不了请求头,那就修改每次请求路径,比如路径后加一个时间戳,跟打包过程中在文件名后又hash值一个道理
我是在index.html中采取了
document.write("<script type='text/javascript' src='./static/xxxx?t=" + Date.now() + "'><\/script>");
问题解决