0

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 中无法正常工作,但会使内容元素完全消失。谢谢你的帮助...

4

3 回答 3

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" />
于 2011-03-10T07:06:24.123 回答
0

如果我理解你的权利,你可以这样做:

echo $variable.'?d='time();

将 unixtime 标记附加到字符串的末尾。

于 2011-03-10T00:39:14.390 回答
0

需要做的就是欺骗浏览器重新加载图像。

文件名可以在任何地方保持相同,唯一需要更改的是 img src="" 当您决定显示图像时。

像这样的东西:

<img src="<?php echo $img_name.'?'.time(); ?>" />
于 2013-10-15T12:41:08.070 回答