【发布时间】:2009-03-26 08:17:43
【问题描述】:
我有一个页面需要在 onload 事件上下载图像文件,但是对于所有页面调用!现在,它在第一次调用中下载图像,但在第二次调用中它是从临时获取的,这不是我想要的。我需要为每个负载做一些计算。所以我想删除我在每次加载时从临时或其他强制客户端再次从服务器下载它的文件下载的文件。
JavaScript 解决方案会很棒。谢谢。
【问题讨论】:
标签: javascript file-io
我有一个页面需要在 onload 事件上下载图像文件,但是对于所有页面调用!现在,它在第一次调用中下载图像,但在第二次调用中它是从临时获取的,这不是我想要的。我需要为每个负载做一些计算。所以我想删除我在每次加载时从临时或其他强制客户端再次从服务器下载它的文件下载的文件。
JavaScript 解决方案会很棒。谢谢。
【问题讨论】:
标签: javascript file-io
不,您无法使用 Javascript 对缓存执行任何操作,但您可以更改图像的 url,使其不在缓存中。
只需在图片的url中添加一个查询字符串,每次都使用当前时间使其唯一:
<script type="text/javascript">
document.write('<img src="images/theImage.gif?t=' + new Date().getTime() + '" alt="" />');
</script>
【讨论】:
我了解您正在寻找 javascript 解决方案,但解决此问题的好方法是使用指定 no-cache 和 expiry 值的 HTTP 响应标头。如果您无法使用 .htaccess 控制 Web 服务器配置,则可以创建一个简单的 PHP 脚本,在提供内容之前设置这些标头。在 PHP 中:
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
【讨论】:
修改 URL 字符串如下:
originalUrl += "?" + new Date().getTime();
【讨论】:
我会为正在下载到 Cache-Control 的图像设置 HTTP 标头:no-cache,而不是想出一些 javascript “hack”。
【讨论】: