何你更新网站时处理本地保存在缓存中的图像?

时间:2013-04-30 08:47:39

标签: php web-applications image-processing web ftp

当我将新内容上传到我的网页示例新图片时,当我连接到网页时,我仍然会看到旧图像,即使我在查看代码时看到新内容。

我怀疑内容在我的浏览器上本地缓存,因此只有当缓存已满或清理后才会看到新内容。

任何人都可以告诉我是否可以允许用户看到我上传后立即上传的新内容,而无需清除缓存。

我可以为本地用户禁用它吗?

4 个答案:

答案 0 :(得分:1)

您可以在?<?php echo time();?>标记的网址末尾添加一个简单的<img/>,但这会强制网页每次重新加载图片...而不仅仅是在您更新图片时。 / p>

答案 1 :(得分:1)

最简单的方法是,每当修改文件时,都会给它一个新的文件名。

或者,您可以附加时间戳。原始版本是这样的:

<img src="images/foo.gif?t=<?php echo time(); ?>" />

然而,这会导致每次重新加载图像。更好的版本是:

<img src="images/foo.gif?t=<?php echo filemtime($siteRootDir . '/images/foo.gif'); ?>" />

这将打印文件本身的修改时间戳,因此只有在实际修改文件时才会请求新版本。显然$siteRootDir必须具有相关价值。

答案 2 :(得分:1)

常见的方法是在图片调用后添加GET字符串。

在配置中的某处设置字符串:

<?php $version = "xyz123"; ?>

现在将字符串添加到您的图片,脚本或CSS调用中:

<img src="path/to/image.png?<?php echo $version; ?>"/>

每当你改变你的东西时,修改版本字符串以强制更新外部文件。

答案 3 :(得分:0)

我所做的是将时间函数附加到图像的URL的末尾,以便每次为每个用户动态点击它。 e.g:

echo '<img src="images/image.jpg?' . time() . '" alt="">';