我正在创建一个允许用户上传图像的输入表单。提交后,用户返回到顶部带有一个构象位的表单。PHP强制刷新图像
然后通过查询将预览的任何图像预览到存储图像URL的MySQL数据库。但是,如果用户上传照片,则会预览该照片,然后他们决定更改该照片并重新提交该表单,除非您手动按下浏览器上的刷新,否则当您将照片重新显示到新照片不显示的表单时。
有什么办法强制刷新/缓存删除或刷新该特定图像,而不是整个页面?
谢谢
我正在创建一个允许用户上传图像的输入表单。提交后,用户返回到顶部带有一个构象位的表单。PHP强制刷新图像
然后通过查询将预览的任何图像预览到存储图像URL的MySQL数据库。但是,如果用户上传照片,则会预览该照片,然后他们决定更改该照片并重新提交该表单,除非您手动按下浏览器上的刷新,否则当您将照片重新显示到新照片不显示的表单时。
有什么办法强制刷新/缓存删除或刷新该特定图像,而不是整个页面?
谢谢
将修改日期添加到图像的末尾作为查询。
<img src="/images/photo.png?=1239293"/>
在PHP
<img src="/images/photo.png?=<?php echo filemtime($filename)?>"/>
这里的诀窍是告诉浏览器不要缓存内容。您可以通过任何其他事情之前把这些语句做到这一点(没有空格或任何东西!)
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
取决于你如何加载图像,你也可以做使用jQuery图像的一个JavaScript刷新。
,这都对时间的表现有什么影响? – DorianHuxley 2013-05-13 16:03:45
-1,不要在图像头中禁用高速缓存。这将迫使图像在每次页面加载时被下载。 – cgTag 2013-05-13 16:04:23
这将使浏览器不缓存页面上的内容。表现会下降,但不是很显着;但是,如果页面上有很多图像,则可能会显着降低图像。 – 2013-05-13 16:04:28
You could replace the current image by a new one using JavaScript:
<div id="imageHolder">this is where the image will show</div>
<script type="text/javascript">
function myfunction(){
document.getElementById("imageHolder").innerHTML="<div id=\"imageHolder\"><img src='imagefolder/imagename.jpg' alt=''/></div>";
}</script>
你需要完成课程后上传到触发功能myfunction的...
在PHP中,你可以发送一个随机数或当前时间戳:
<img src="image.jpg?<?=Date('U')?>">
或
<img src="image.jpg?<?=rand(1,32000)?>">
这对我来说真是棒极了:
image.jpg?=<?php echo rand() . "\n";?>
感谢您的回答,虽然我在4年前解决了它:P – DorianHuxley 2017-02-15 15:17:13
好的解决方案我想欺骗浏览器重新加载它... – 2013-05-13 16:05:35
你会推荐什么函数来生成时间戳? – DorianHuxley 2013-05-13 16:15:20
当我欺骗浏览器重新加载时,我刚刚添加了没有任何时间戳的问号。 – bestprogrammerintheworld 2013-05-13 16:26:25