【发布时间】:2013-04-30 08:47:38
【问题描述】:
当我将新内容上传到我的网页示例新图像时,当我连接到网页时,我仍然看到旧图像,即使当我查看代码时我看到了新内容。
我怀疑内容在我的浏览器上保持本地缓存,因此只有当缓存已满或被清除时,我才会看到新内容。
谁能告诉我是否可以允许用户在我上传后立即看到我上传的新内容而无需清除缓存。
我可以为本地用户禁用它吗?
【问题讨论】:
标签: php web-applications image-processing web ftp
当我将新内容上传到我的网页示例新图像时,当我连接到网页时,我仍然看到旧图像,即使当我查看代码时我看到了新内容。
我怀疑内容在我的浏览器上保持本地缓存,因此只有当缓存已满或被清除时,我才会看到新内容。
谁能告诉我是否可以允许用户在我上传后立即看到我上传的新内容而无需清除缓存。
我可以为本地用户禁用它吗?
【问题讨论】:
标签: php web-applications image-processing web ftp
最简单的方法是,每当你修改文件时,你给它一个新的文件名。
或者,您可以附加时间戳。粗略的版本是这样的:
<img src="images/foo.gif?t=<?php echo time(); ?>" />
但是,这会导致图像每次都重新加载。更好的版本是:
<img src="images/foo.gif?t=<?php echo filemtime($siteRootDir . '/images/foo.gif'); ?>" />
这将打印文件本身的修改时间戳,因此只有在文件实际修改时才会请求新版本。显然$siteRootDir 必须有一个相关的值。
【讨论】:
您可以在<img/> 标记中的网址末尾添加一个简单的?<?php echo time();?>,但这会强制页面每次重新加载图像.. 不仅仅是在您更新它们时。
【讨论】:
一种常见的方法是在图像调用后面添加一个 GET 字符串。
在配置中的某处设置字符串:
<?php $version = "xyz123"; ?>
现在将字符串添加到您的图像、脚本或 css 调用中:
<img src="path/to/image.png?<?php echo $version; ?>"/>
每当您更改内容时,请修改版本字符串以强制更新外部文件。
【讨论】:
我所做的是将时间函数附加到图像 URL 的末尾,以便每次为每个用户动态地点击它。例如:
echo '<img src="images/image.jpg?' . time() . '" alt="">';
【讨论】: