我在用户的浏览器上缓存图像以避免重复的网络请求。但是,有时这些图像将从服务器中删除,而新的图像将以相同的名称取代它们。
我想向用户提供这些新图像,但不知道如何告诉浏览器这样做。它没有发送任何请求(显然,这是用于缓存的内容)。
谷歌的结果表明无法做到。是这样吗?
答案 0 :(得分:3)
如果文件在浏览器中缓存,则不会被请求。因此,您无法发送任何指令来刷新它。但你可以:
imag.jpg?v=5
我个人使用第二个选项。在应用程序配置文件中定义版本号。然后,您可以在更改设计时更改版本号,并刷新所有images / css / js。
define('VERSION_NUMBER', '2.1')
然后在视图中使用define:
<img src="image.jpg?v=<?php echo VERSION_NUMBER;?>" />
答案 1 :(得分:0)
有很多复杂的方法可以通过HTTP控制缓存。一般机制是您告诉浏览器在指定的到期日期后重新检查图像。浏览器不会请求整个图像,而是发送If-Modified-Since
等标题,服务器可以回复304 Not Modified
或发送新图像。
具体如何执行此操作取决于您如何为图像提供服务。如果您只是使用Apache从文件系统中为它们提供服务,请查看mod_expires
模块。
如果您搜索“HTTP缓存”,您应该找到许多不同的技术。您无法做的一件事是主动告诉浏览器在服务器上修改它时解除某些内容,因为您只能响应浏览器发出的请求。