Web浏览器是否允许以编程方式清除(过期)缓存?

alp*_*pav 9 javascript browser deployment caching

目前浏览器具有不完整的缓存实现.它只允许设置到期或保持即时到期.缺少以编程方式使缓存过期的重要第三个选项.如果没有第三个选项,开发人员就无法高效可靠地部署新版本的代码.

如果他们使用第二个选项,如果他们有许多小文件的框架,效率很低.将许多小文件合并为一个文件效率不高,因为任何小的更改都将导致部署整个框架而不是单个文件.

如果他们使用第一个选项,则在缓存过期之前不会获得用户,这会在服务器端代码和客户端代码之间以及可能在客户端代码的不同部分之间产生兼容性问题.设置到期需要预测未来部署,这是不方便的,并且将禁止快速修复错误.

当人们询问这个问题时,一些人建议使用版本号或其他临时ID来通过加载唯一的URL来欺骗浏览器缓存.它的问题在于它为网络和本地文件系统带来了不必要的开销,以加载和存储不必要的旧版本和大量独特的URL.它几乎违背了通过URL缓存的目的.正确的解决方案是允许网站的程序员清理仅来自该网站的文件的缓存.这样可以请求更新文件列表,并清理新文件的缓存以允许浏览器加载新版本.

正确的缓存机制是简单而强大的模式,可以将所有Web客户端开发提升到新的水平,我只想知道为什么浏览器生产者还没有实现它.

Nik*_*aos 5

呵呵,当然,就我们开发人员而言,呵呵!

另一方面,缓存用于促进用户在响应性方面的体验.我们有责任解决所有这些滋扰问题,并保护用户免受无知和无所不在的困扰.


mfe*_*old 3

我认为这并不容易。我发现的一个问题是,这不仅仅是浏览器缓存。您的文件可以在从服务器到浏览器(客户端)的过程中的许多地方缓存。一些浏览器仍然可以使用旧版本,并且哪个版本已被清除以及该特定客户端应该使用哪个版本的问题的答案很快就变得非常不确定。