Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 浏览器是否缓存图像?_Php_Html_Browser Cache - Fatal编程技术网

Php 浏览器是否缓存图像?

Php 浏览器是否缓存图像?,php,html,browser-cache,Php,Html,Browser Cache,我有一个PHP页面,其中包含一些Javascript,可以在固定的时间间隔(5秒)后更改IMG标记上的SRC属性。我循环浏览的图像数量是固定的。PHP为所有图像URL构建一个字符串数组。图像很小,大多数小于10k 如何判断浏览器是否正在缓存图像?如果没有,我必须做什么来确保浏览器缓存图像?如果需要尝试强制浏览器不缓存某些图像,您应该正确配置服务器为每个映像请求发送的头,以便它们发送正确的缓存控制头。是的,浏览器将缓存它们,通常即使头上另有说明。我发现最好的组合是发出必要的缓存控制头,同时向源UR

我有一个PHP页面,其中包含一些Javascript,可以在固定的时间间隔(5秒)后更改IMG标记上的SRC属性。我循环浏览的图像数量是固定的。PHP为所有图像URL构建一个字符串数组。图像很小,大多数小于10k


如何判断浏览器是否正在缓存图像?如果没有,我必须做什么来确保浏览器缓存图像?

如果需要尝试强制浏览器不缓存某些图像,您应该正确配置服务器为每个映像请求发送的头,以便它们发送正确的缓存控制头。

是的,浏览器将缓存它们,通常即使头上另有说明。我发现最好的组合是发出必要的缓存控制头,同时向源URL追加一个随机字符串

例如,以秒为单位设置最大年龄:

header("Cache-Control: max-age=3600");
然后将一个随机字符串附加到img源中。这需要使用Javascript,而不是PHP,因为一旦您的URL在PHP中生成,它们就不会使用新的随机字符串不断更新:

var randomString = "" + new Date().getTime();
var imageUrl = yourImageArray[someIndex] + "?" + randomString;

希望您能理解。

当然,浏览器会缓存图像。是的,安装firebug或webkit调试器,它会告诉您浏览器是否使用了缓存版本。人们通过在文件末尾附加一个数字来解决这个问题。大多数情况下,浏览器的缓存是由用户控制的。@j08691这是不正确的。大多数主要浏览器都会遵循正确配置的缓存控制头,让您能够有效地控制浏览器缓存内容的方式。我想缓存它们-只是不确定如何确保它们是正确的。正如在对原始问题的评论中提到的,您可以使用Firebug、WebKit调试器、devOper工具、,查看浏览器发出的每个请求。如果映像已加载,但没有网络请求,则它是从缓存中填充的。确定如何操作?我在PHP文件中提到了几个图像,如何确保只缓存循环中的图像?我不知道;I don’我不在乎其他人,所以一个简单地将所有内容缓存大约1小时的解决方案也可以……好的,我误解了您最初的请求,并更新了我的答案,将缓存控制设置为1小时。此外,您是否希望浏览器将图像缓存一小时,然后确保在一小时后浏览器强制重新加载图像?我认为没有人会在我的网站上停留超过一小时-我只是不想每5秒加载一个10k图像。。。那只是不必要的浪费。