2013-08-16 53 views
0

我有一个显示用户上传图片的网页。这些图像的缓存时间最长,这样用户每次查看页面时都不需要从服务器检索它们。但是,当用户开始替换图像时(文件名的序列号为01.jpg,02.jpg等),会产生问题。除非他点击刷新按钮,否则用户在上传后仍然会看到旧图像。如何强制刷新标题?

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

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

回答

0

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

你不能在一些其他资源上发出缓存请求,这不是网络的工作原理。


我会推荐使用fingerprinting。有没有你不想使用它的原因?

+0

我想考虑其他更简单的选项,如果有任何第一个,因为这将意味着在用户页面上的额外编码。 –

+0

给那些低估的人:你能解释为什么你低估了吗? – Halcyon

+0

我不知道为什么在你的答案沉重downvotes。你的努力帮助。为什么我不要指纹是一个更好的理由,因为它可以防止缓存,正如您所指出的那样,ETag效率较低。硬刷新仍然是我的首选。 –