gpt4 book ai didi

javascript - 刷新图像或清除缓存

转载 作者:行者123 更新时间:2023-11-30 10:51:30 26 4
gpt4 key购买 nike

有没有办法(服务器端或客户端)强制浏览器从服务器拉取文件(图像)的新版本。有问题的图像会被缓存很长时间。我知道我可以附加一个随机数,例如,附加到图像的 URL,但在这种情况下这是 Not Acceptable 。我需要从完全相同 URL 刷新图像。

我在做什么:一个类似 YouTube 的门户网站,用户可以在其中上传视频。每个视频都有一个缩略图,显示在门户网站的各个页面上。用户可以随时更改缩略图(他可以从三个生成的缩略图中进行选择)。因此,当发生这种情况时(新图像覆盖“原始”图像),我不想刷新视频的缩略图,以便所有者(我不在乎其他用户是否看到旧缩略图)无论如何都会看到新缩略图显示缩略图的位置。

恐怕这无法完成,但我在这里询问只是为了确定。

更新:我在服务器端使用 nginx 和 PHP

最佳答案

你可以使用 ETAGs在你的缩略图上。这将阻止实际缩略图数据的传输,如果它没有改变(即仍然具有相同的散列)。但是,您仍然会面临客户端 HTTP 请求以检查 ETAG 是否已更改(通常由 HTTP 304 响应。

但结合相当短的新鲜度阈值(比如几分钟),您可以在缓存和新鲜度之间取得权衡,同时仍能节省资源。如果你需要绝对的新鲜感,你可能不得不坚持使用 ETAG。如果您创建一个聪明的哈希函数,您可以在您的前端负载均衡器(或至少接近它)上处理 ETAG 请求,因此这可能相当便宜。

编辑:添加我的其他评论的备选方案。

另一种方法是使用添加的请求参数在资源按照另一个答案中的建议更改时强制重新获取。该模式的一个变体(许多 Rails 应用程序使用)是将最后一次更改的时间戳(或某种哈希)作为参数附加到文件,该文件仅在文件实际发生更改时更改。像这样的事情,或上述方法之一,实际上是真正确保没有不必要的缓存验证请求同时始终拥有最新资源的唯一方法。

关于javascript - 刷新图像或清除缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5028290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com