在客户端缓存PHP脚本输出

在客户端缓存PHP脚本输出,php,python,caching,mechanize,Php,Python,Caching,Mechanize,我有一个php脚本,每次调用它时都会输出一个随机图像。因此,当我在web浏览器中打开脚本时,它会显示一个图像,如果我刷新,则会显示另一个图像 我试图通过命令行(通过mechanize)从访问网站中捕获正确的图像。我使用urllib2.urlopen(…)来获取图像,但每次这样做都会得到不同的图像。我希望能够始终抓住相同的图像。我怎样才能做到这一点 谢谢 更新: 这是我所说的一个例子。如果在web浏览器中重新加载此图像,每次都会弹出不同的图像。如果右键单击并保存,则会得到正确的图像。如果你继续这样

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

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

谢谢

更新: 这是我所说的一个例子。如果在web浏览器中重新加载此图像,每次都会弹出不同的图像。如果右键单击并保存,则会得到正确的图像。如果你继续这样做,你就会得到正确的图像。。。但是,如何从命令行执行此操作


您的图像很可能被浏览器缓存设置为:

<?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
?>


每次生成图像时,都使用另一个名称(可以通过在原始名称上添加毫秒来完成)。

最有可能的情况是,浏览器缓存了图像,请设置以下内容:

<?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
?>


每次生成映像时,都使用另一个名称(可以通过在原始名称上添加毫秒来完成)。

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


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

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


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

抓取一次并将其缓存在您的一侧。

抓取一次并将其缓存在您的一侧。

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

您的命令行客户端需要做同样的事情。每次请求时都需要保存图像。然后,当找到要保留的图像时,需要将已保存的图像复制到要永久保留的位置


如果服务器总是为新的随机图像提供服务,那么您就无能为力了。

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

您的命令行客户端需要做同样的事情。每次请求时都需要保存图像。然后,当找到要保留的图像时,需要将已保存的图像复制到要永久保留的位置


如果服务器总是提供一个新的随机映像,那么您就无能为力了。

我不太明白。您的意思是,当您右键单击图片上的“保存”时,会保存与可见图像不同的图像?您可以提供链接或代码吗?页面可能会使用一些javascript技巧来更改“右键单击菜单”。尝试使用禁用javascript的浏览器。否则,请提供您的mechanize代码或该站点的链接。对此表示抱歉。如果我右键单击,我会得到正确的图像。但是我不能通过命令行从访问站点下载相同的图像。我每次只能得到不同的图像,这不是我想要的。我不太明白。您的意思是,当您右键单击图片上的“保存”时,会保存与可见图像不同的图像?您可以提供链接或代码吗?页面可能会使用一些javascript技巧来更改“右键单击菜单”。尝试使用禁用javascript的浏览器。否则,请提供您的mechanize代码或该站点的链接。对此表示抱歉。如果我右键单击,我会得到正确的图像。但是我不能通过命令行从访问站点下载相同的图像。我每次只能得到不同的图像,这不是我想要的。