一旦服务器上的文件被删除,清除浏览器缓存


Clearing browser cache once file on server is deleted

我在用户的浏览器上缓存图像,以避免重复的网络请求。但是,有时这些图像将从服务器上删除,新的图像将以相同的名称取代它们。

我想为用户提供这些新图像,但不知道如何告诉浏览器这样做。它没有发送任何请求(显然,这就是缓存的用途)。

谷歌结果显示这是不可能的。是这样吗?

如果文件缓存在浏览器中,则不会请求它。所以你不能发送任何指令来刷新它。但是你可以:

  • 更改文件名
  • 添加版本号imag.jpg?v=5
  • 如果你的图片要经常更改,请使用较短的过期时间

我个人使用第二个选项。在应用程序配置文件中定义版本号。当你改变你的设计时,你可以改变版本号,所有的images/css/js都会刷新。

define('VERSION_NUMBER', '2.1')

然后在视图中使用定义:

<img src="image.jpg?v=<?php echo VERSION_NUMBER;?>" />

使用HTTP控制缓存有很多复杂的方法。一般机制是告诉浏览器在指定的过期日期之后重新检查图像。而不是请求整个图像,浏览器将发送标题,如If-Modified-Since,服务器可以响应304 Not Modified或发送新的图像。

具体怎么做取决于你是如何提供图片的。如果您只是使用Apache从文件系统为它们提供服务,请查看mod_expires模块。

如果你搜索"HTTP缓存",你应该会找到很多不同的技术。不能做的一件事是主动告诉浏览器在服务器上修改某些内容时取消缓存,因为您只能响应浏览器发出的请求。