javascript – 我可以依靠ETag进行缓存控制

我们当前的部署使用归属构建缓存清除方法:我们的映射文件包含我们的 javascript文件的哈希值(此映射是在应用程序启动时创建的).然后在我们的模板中使用该文件中的值来生成脚本标记,该脚本标记包括用于缓存清除的GET参数,即< script src =“/ static / js / somefile?v = adg34d>

我目前正在将整个页面转换为使用RequireJS,我想摆脱这些缓存破坏参数,因为它们很难实现.我们的HTTP服务器配置为向其服务的每个资产资源添加正确的Last-Modified和ETag标头.如果我查看Chrome Web控制台,我可以看到浏览器也使用它并获得正确的304.虽然我相信Chrome能够做到这一点,但当然还有其他浏览器.

问题是:如果我只使用Last-Modified并且ETag标头可以依靠浏览器来实现它,或者我真的需要缓存破坏参数吗?

我只需要支持

>歌剧
> Firefox
> Chrome
> IE> = 8
> Safari> = 5

解决方法

是的,您可以依赖浏览器,但可能需要很长时间才能等待304响应.谷歌以更有效的方式做到这一点.缓存清除参数v的每个值代表特定版本的文件.如果您不更改该值,浏览器将跳过版本验证并继续使用Cache-Control或Expires指示的本地缓存.

因此,它是性能和便利之间的决定.

情况2.如果您的文件不存在但是动态创建(即实时合并一些脚本文件),您也需要参数.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...