【问题标题】:How to force a refresh with header?如何使用标题强制刷新?
【发布时间】:2013-08-17 00:41:16
【问题描述】:

我有一个显示用户上传图像的网页。图像以较长的 max-age 缓存,因此用户无需在每次查看页面时都从服务器检索它们。但是,这会在用户开始替换图像时产生问题(文件名的序列号为 01.jpg、02.jpg 等)。用户在上传后仍会看到旧图像,除非他单击刷新按钮。

有没有办法(不向所有图像附加查询字符串)在上传后重定向到此页面时强制进行硬刷新?目前,我正在使用 PHP 标头函数进行重定向:

header("Location: //$host/user/$id");

【问题讨论】:

    标签: php redirect upload cache-control page-refresh


    【解决方案1】:

    这取决于您的缓存机制。如果你想控制浏览器何时缓存失效(没有指纹),你需要将它设置为must-revalidate(所以基本上没有缓存)。这会导致性能损失。您可以使用ETags304 Not Modified 获得一些类似的缓存,但请求的开销可能已经太糟糕了。

    您不能发出破坏其他资源缓存的请求,这不是网络的工作方式。


    我建议使用指纹识别。你有不想使用它的理由吗?

    【讨论】:

    • 如果有第一个选项,我想考虑其他更简单的选项,因为这意味着用户页面上的额外编码。
    • 致那些投反对票的人:你能解释一下你投反对票的原因吗?
    • 我不知道为什么对你的回答投反对票。为您提供帮助。我不想要指纹的一个更好的原因是因为它阻止了缓存,正如您正确指出的那样,ETags 效率较低。硬刷新仍然是我的首选。
    • 硬刷新是客户端的事情,你命令浏览器不要使用任何缓存。无法从服务器执行此操作。至于否决票,我想对于缓存的工作原理存在很多普遍的误解。
    • 如果使用 PHP 无法进行硬重载,我可以使用 javascript。您能否将上述评论作为您的答案的一部分,以便我接受它,因为这是我正在寻找的答案?谢谢。
    猜你喜欢
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    相关资源
    最近更新 更多