从服务器中,我如何强制外部文件到期,以便浏览器接收新鲜文件



我有一个显示视图,它使用'通用查看器'加载图像。图像尺寸来自来自IIIF映像服务器的JSON文件。

我修复了一个错误,并且存在一个新的JSON文件,但是用户的浏览器仍在使用旧信息。

我知道我可以像我本人在机器上一样努力做一个艰苦的校友,但是许多用户可能会受到影响,我现在很好奇。

现代浏览所有带有缓存控制功能的船。使用ETAG和高速缓存控制标头的组合,您可以完成所寻求的目标,而无需更改文件名或使用Cache Busting查询参数。

eTags允许您向客户端传达令牌,该客户端将告诉他们的浏览器更新缓存版本。可以根据内容创建日期,内容长度或内容的指纹创建此令牌。

缓存控制标头允许您为Web资源创建有关WHO,WHO和如何缓存您的内容的策略。

使用ETAGS和CACHE-CONTROL标头是一种有用的方法,可以在服务IIIF或任何其他内容时与用户何时更新其缓存。但是,添加ETAG和高速缓存控制可能是您本地实现的特定特定的。许多框架(例如Ruby on Rails)都融入其中的大部分功能。还有一些Web服务器配置可能需要修改,可以从使用这些策略的HTML5样板项目中获得一些示例配置。

示例apache配置:

  • etags https://github.com/h5bp/server-configs-apache/blob/master/src/web_performance/etegance/etetags.conf
  • 缓存到期https://github.com/h5bp/server-configs-apache/blob/master/src/web_performance/expires_headers.conf

它取决于JSON文件的服务以及如何缓存。

在文件上过期缓存的保证方法是每次更改文件名更改文件名。这通常是将其重命名的filename-MD5HASH.ext,其中MD5HASH是文件的MD5哈希。

如果您无法更改文件名(它来自您无法控制的源,则可以逃脱添加一个Caching Busting查询键,例如http://example.com/file.ext?q=123456

最新更新