Internet Explorer存在问题。在这种情况下,缓存问题。已保存到我的服务器并在动态生成的站点(WordPress)中引用的图像在IE8中显示为“红色x”时,这些图像以某种方式被修改,但图像的URI在代码中未更改,有时。
当我更改这些资源的URI时,图像会在IE中正确显示。因此,我想在我的图像URI的末尾附加一个有点独特的查询字符串(又名更改“graphic.png”到“graphic.png?d = a334bc4zxdg2”(如果是随机的)或“graphic.png?d = 201103091616”(如果过时了。我对随机查询字符串或“过时”查询字符串并不挑剔 - 只要它是附加到.PNG和.JPG文件类型末尾的长查询字符串。
我试图写自己的,因此非常谦卑。我认为这将通过preg_replace语句来解决......某些事情沿着
行<php
echo preg_replace('(png|jpg)', '$1.?d.=<the-randomizing-or-timestamp-code>','some-subject-I-dont-know-how-to-specify')
?>
从上面可以看出,我需要很多帮助来编写这段代码。请注意,我在WordPress中运行,它使用一些独特的钩子,我试图将它应用于身体的全部内容。谢谢!
==更新==
一位朋友建议如下:
// Append PNG files with timestamp query string
function date_images () {
$new_content = str_replace (".png" ,".png?id=".time() ,$original_content);
}
add_filter('the_content', 'date_images');
那是在正确的道路上吗?它在Wordpress中无法正常工作,但会使内容元素完全消失。谢谢你的帮助...
答案 0 :(得分:1)
最好将其作为客户端修复程序实现,以便非IE用户仍然可以获得常规图像URL。
我会试试这个:
<script type="text/javascript" src="PATH-TO-JQUERY"></script>
<script type="text/javascript">
// document.all is IE only
if ( document.all )
{
$(document).ready(function(){
// grab each image
$('img').each(function(){
var date = new Date;
// add the current unix timestamp in microseconds to the the image src as a query string
this.src = this.src + '?' + date.getTime();
});
});
}
</script>
<img src="image1.gif" />
<img src="image2.gif" />
<img src="image3.gif" />
答案 1 :(得分:0)
如果我理解你的话,你可以这样做:
echo $variable.'?d='time();
将unixtime标记附加到字符串的末尾。
答案 2 :(得分:0)
所有需要做的就是欺骗浏览器重新加载图像。
文件名可以在任何地方保持不变,当你决定显示图像时,唯一需要改变的是img src =“”。
这样的事情:
<img src="<?php echo $img_name.'?'.time(); ?>" />