1

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

我修复了一个错误并存在一个新的 json 文件,但用户的浏览器仍在使用旧的 info.json 文件。

我知道我可以让他们重新加载,就像我自己在我的机器上做的那样,但是很多用户可能会受到影响,我现在很好奇。

4

2 回答 2

1

现代浏览器都内置了缓存控制功能。使用 ETag 和 Cache-Control 标头的组合,您可以完成您所寻求的,而无需更改文件名或使用缓存破坏查询参数。

ETags允许您将令牌传递给客户端,该客户端将告诉他们的浏览器更新缓存的版本。可以基于内容创建日期、内容长度或内容的指纹来创建此令牌。

Cache-Control 标头允许您为 Web 资源创建有关内容可以缓存多长时间、谁以及如何缓存的策略。

在提供 IIIF 或任何其他内容时,使用 ETags 和 Cache-Control 标头是与用户交流何时更新其缓存的有用方式。但是,添加 ETags 和 Cache-Control 这可能非常特定于您的本地实现。许多框架(如Ruby on Rails)都内置了很多这种功能。还有一些 Web 服务器配置可能需要修改,一些示例配置可从使用这些策略的 HTML5 Boilerplate 项目中获得。

示例 Apache 配置:

于 2018-01-05T15:15:29.410 回答
0

这取决于提供 JSON 文件的位置以及缓存的方式。

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

如果您无法更改文件名(它来自您无法控制的来源,您可能可以通过向 URL 添加缓存破坏查询键来逃脱。像http://example.com/file.ext?q=123456.

于 2017-12-13T23:01:47.733 回答