在客户端缓存PHP脚本输出

时间:2009-07-13 06:03:22

标签: php python caching mechanize

我有一个php脚本,每次调用时都会输出一个随机图像。因此,当我在Web浏览器中打开脚本时,它会显示一个图像,如果我刷新,则会显示另一个图像。

我正试图通过命令行(通过机械化)访问网站来捕获正确的图像。我使用urllib2.urlopen(...)来抓取图像,但每次我这样做都会得到不同的图像。我希望能够始终如一地抓取相同的图像。我怎么能做到这一点?

谢谢!

更新: 这是我正在谈论的一个例子。如果在Web浏览器中重新加载此图像,则每次都会弹出不同的图像。如果右键单击并保存,则会获得正确的图像。如果你继续这样做,你会不断获得正确的图像......但是,你是如何从命令行获得的呢?

http://www.biglickmedia.com/art/random/index.php

4 个答案:

答案 0 :(得分:1)

您的图片很可能是由浏览器设置的缓存:

<?php
      header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
      header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>

每次生成图像时都会使用其他名称(可以通过向原始图像添加毫秒来完成)。

答案 1 :(得分:1)

您可以尝试将生成的图像缓存到磁盘,并通过其他链接将其提供给用户。

生成图像后,将其移动到临时文件夹,用户可以在其中下载生成的静态图像。下载后,删除以腾出空间。

答案 2 :(得分:1)

当您从浏览器保存它时,它不会返回服务器重新请求图像,它正在为其从缓存中显示的图像提供服务。

您的命令行客户端需要执行相同的操作。您需要在每次请求时保存图像。然后,当您找到想要保留的图像时,您需要将已保存的图像复制到您希望永久保存的任何位置。

如果服务器总是在提供新的随机图像,那么您无法做任何事情。

答案 3 :(得分:0)

抓住它并将其缓存在你身边。