为什么更改服务器上的图像名称会导致调用旧图像?

时间:2013-10-22 16:47:49

标签: javascript php

我在Ubuntu 12.04.1上运行幻灯片,使用Javascript和样式加载图像(slide1.jpg,slide2.jpg,slide3.jpg ..,slide5.jpg):

document.getElementById('slide_area').className='slide'+step;

.slide1{background-image: url(../upload/slide1.jpg)}
.slide2{background-image: url(../upload/slide2.jpg)}
.slide3{background-image: url(../upload/slide3.jpg)}
.slide4{background-image: url(../upload/slide4.jpg)}
.slide5{background-image: url(../upload/slide5.jpg)}

当我更改图像名称(show1.jpg,show2.jpg,show3.jpg ..,show5.jpg)时,也会更改以下样式:

.slide1{background-image: url(../upload/show1.jpg)}
.slide2{background-image: url(../upload/show2.jpg)}
.slide3{background-image: url(../upload/show3.jpg)}
.slide4{background-image: url(../upload/show4.jpg)}
.slide5{background-image: url(../upload/show5.jpg)}

在Chrome上打开网络部分,我看到服务器正在为图像调用新名称和旧名称!

我在index.php中添加了标题:

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); 

当我更改图像名称时,即使清除浏览器缓存,因为我根据imageObject.complete属性顺序加载图像(逐个),因此幻灯片显示无法正常工作!但是,如果不改变名称,一切都将变得完美,图像也能顺利加载!

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

按Ctrl + F5可能会解决您的问题,因为浏览器倾向于缓存静态文件,如CSS / JavaScript和图像。

答案 1 :(得分:0)

您的问题不是很清楚,但我认为是缓存的CSS文件。请尝试更改CSS文件的名称!

答案 2 :(得分:0)

我已经解决了这个问题从服务器调用图像一次而不是每次调用它,即我在文档中添加了图像,然后在每个图像中添加了一个src(ONCE - 这意味着调用它们一旦从服务器),然后每次重复,我显示一个图像并隐藏其他图像!因为如果我在查看时给每个图像一个src,那么当服务器请求查看上次调用时图像是否被修改(304响应)时,服务器可能会很慢,这会导致视图延迟!谢谢:))