Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以依赖ETag进行缓存控制吗_Javascript_Http_Caching_Requirejs_Browser Cache - Fatal编程技术网

Javascript 我可以依赖ETag进行缓存控制吗

Javascript 我可以依赖ETag进行缓存控制吗,javascript,http,caching,requirejs,browser-cache,Javascript,Http,Caching,Requirejs,Browser Cache,我们当前的部署使用了一种破坏主构建缓存的方法:我们有一个映射文件,其中包含javascript文件的哈希(这个映射是在应用程序启动时创建的)。然后,此文件中的值将用于我们的模板中,以生成一个脚本标记,其中包含用于缓存破坏的GET参数,即是的,您可以依赖浏览器,但等待304响应可能需要很长时间。谷歌以一种更有效的方式做到了这一点。缓存破坏参数v的每个值代表文件的特定版本。如果不更改该值,浏览器将跳过版本验证并继续使用由缓存控制或过期指示的本地缓存 因此,这是性能和方便性之间的决定 案例2。如果您的

我们当前的部署使用了一种破坏主构建缓存的方法:我们有一个映射文件,其中包含javascript文件的哈希(这个映射是在应用程序启动时创建的)。然后,此文件中的值将用于我们的模板中,以生成一个脚本标记,其中包含用于缓存破坏的GET参数,即
是的,您可以依赖浏览器,但等待
304
响应可能需要很长时间。谷歌以一种更有效的方式做到了这一点。缓存破坏参数
v
的每个值代表文件的特定版本。如果不更改该值,浏览器将跳过版本验证并继续使用由
缓存控制
过期
指示的本地缓存

因此,这是性能和方便性之间的决定


案例2。如果您的文件不存在,而是动态创建的(即实时合并一些脚本文件),您也需要该参数。

使用原始方法,url是不同的,您可以对其进行不确定的缓存,知道如果更改了url,url将更改,使用ETag,您必须始终执行304检查以验证。如果您当前的方法使用304,那么什么也不会改变,然后使用ETags的“是”也会按照描述工作,但是,由于请求是异步的,浏览器将经常解析为缓存。最终它会刷新(比如重新打开浏览器),但简单的F5并不总是有效。