我试图找出一种方法来强制在服务器上请求相同uri的资源每次在同一页面上引用它。
例如:我在网址'mypage.com/img?u=1'上有动态生成的图片
uri是同一网页上2个img标签的src。无论内容最终是什么,图像都会被加载一次,然后从浏览器缓存中重新使用该页面上的每个引用。
我尝试过尝试每个缓存标题:
header("Etag: \"".time().rand(100000,999999).'"');
header("Expires: ".gmdate("D, d M Y H:i:s",time()-(60*60*24*1000)) . " GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s",time()-(60*60*24*1000)) . " GMT");
header("Cache-Control: no-store, no-cache, proxy-revalidate, must-revalidate, max-age=0");
header('Pragma: no-cache');
这当然会阻止资源在后续页面加载时缓存,但对我的问题没有任何作用。在您说这是我的设计错误之前我应该只使用不同的URI,知道在当前情况下这不是一个选项,也不是在请求后动态更改引用的uri客户端。
我甚至尝试过使用302,307和303状态标题,并将位置重定向到新的唯一资源,但无济于事。我开始认为这不是一个可解决的问题,因为浏览器设计,但任何输入都将非常感激!
*的 更新 * 如果我使用javascript编写一个新的图像w /与浏览器在初始页面加载时重用的URI完全相同,那么它就会给我一个动态(非缓存)结果。奇
答案 0 :(得分:1)
您是否尝试稍微更改链接以在结尾处添加随机数?
所以uri看起来像: 'mypage.com/img?u=1&123456'(其中123456是rand()* 100000的结果)
这会导致图像重新加载,而不会在初始页面加载期间存储在浏览器缓存中
根据OP清晰度进行修改
你可以尝试使用javascript onLoad事件等到页面加载(第一张图像完成),然后再在第二张图片上启动请求,这是
<img src=# id=secondImage>
document.onLoad = "document.getElementById('secondImage').src = 'mypage.com/img?u=1'";
其他修改
您也可以尝试更改.htaccess文件
Header set Cache-Control: "no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0"
可能没有帮助,但可能