0

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

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

谁能告诉我是否可以让用户在我上传后立即看到我上传的新内容,而无需他们清除缓存。

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

4

4 回答 4

1

?<?php echo time();?>您可以在标签中的 url 末尾添加一个简单的内容<img/>,但这将强制页面每次重新加载图像......而不仅仅是在您更新它们时。

于 2013-04-30T08:50:40.257 回答
1

最简单的方法是,无论何时修改文件,都给它一个新的文件名。

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

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

但是,这将导致每次都重新加载图像。更好的版本是:

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

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

于 2013-04-30T08:50:46.643 回答
1

一种常见的方法是在图像调用后面添加一个 GET 字符串。

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

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

现在将字符串添加到您的图像、脚本或 css 调用中:

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

每当您更改内容时,请修改版本字符串以强制更新外部文件。

于 2013-04-30T08:53:01.323 回答
0

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

echo '<img src="images/image.jpg?' . time() . '" alt="">';
于 2013-04-30T08:52:53.183 回答