【发布时间】:2013-03-02 11:41:08
【问题描述】:
我在用户的浏览器上缓存图像以避免重复的网络请求。但是,有时这些图像会从服务器中删除,而新的图像会以相同的名称取而代之。
我想向用户提供这些新图像,但不知道如何告诉浏览器这样做。它没有发送任何请求(显然,这就是缓存的用途)。
Google 结果显示无法完成。是这样吗?
【问题讨论】:
标签: php browser-cache
我在用户的浏览器上缓存图像以避免重复的网络请求。但是,有时这些图像会从服务器中删除,而新的图像会以相同的名称取而代之。
我想向用户提供这些新图像,但不知道如何告诉浏览器这样做。它没有发送任何请求(显然,这就是缓存的用途)。
Google 结果显示无法完成。是这样吗?
【问题讨论】:
标签: php browser-cache
如果文件缓存在浏览器中,则不会被请求。所以你不能发送任何指令来刷新它。但是你可以:
imag.jpg?v=5
我个人使用第二个选项。在应用程序配置文件中定义版本号。然后可以在更改设计时更改版本号,所有图片/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 缓存”,您应该会发现许多不同的技术。您不能做的一件事是主动告诉浏览器在服务器上修改某些内容时取消缓存,因为您只能响应浏览器发出的请求。
【讨论】: