由GET参数生成的图像。在共享图像之前,如何强制facebook sharer清除缓存?

时间:2014-07-17 20:41:52

标签: php facebook

我根据网址中的GET参数生成图像,将它们组合起来,然后在facebook sharer中共享该图像。但是,除非我在调试工具中手动清除缓存,否则facebook似乎会缓存图像。

我需要一种方法来清除Facebook的缓存,然后再分享。这可能吗?

在这个例子中,我正在硬编码GET参数,但实际上它将基于选定的选项。

代码:

<?php
    $img1= 'images/img1.png'; 
    $img2 = 'images/img2.png';  

    $query = 'img1=';
    $query .= $img1;
    $query .= '&img2=';
    $query .= $img2;
?>


    <!--facebook meta-->
    <meta property="og:image" content="http://mywebsite.com/mergePhotos.php?<?php echo $query;?>" />  
    <meta property="og:title" content="This is my website"/>
    <meta property="fb:admins" content="123456789" />
    <meta property="og:type"   content="website" /> 
    <meta property="og:url"    content="http://mywebsite.com/mergePhotos.php?<?php echo $query;?>" /> 
    <meta property="og:description"    content="Look at these images I combined!" /> 

mergePhotos.php:

 <?php

        $imgl = $_GET['img1'];
        $img2 = $_GET['img2'];

        // Create image instances
        $dest = imagecreatefrompng($imgl);
        $src = imagecreatefrompng($img2);
        imagecolortransparent($src, imagecolorat($src, 0, 0));

        // Copy and merge
        $src_x = imagesx($src);
        $src_y = imagesy($src);
        imagecopymerge($dest, $src, 0, 0, 0, 0, $src_x, $src_y, 100);

        // Output and free from memory
        header('Content-Type: image/png');
        imagepng($dest);

        imagedestroy($dest);
        imagedestroy($src);
    ?>

1 个答案:

答案 0 :(得分:0)

我明白了。我需要在facebook共享者代码的末尾添加microtime(根据Marc B&#39的建议)。所以我的代码结构的方式是fb-sharer代码在一个页面上,并且它引用了另一个页面上的元数据。当我将微码查询添加到共享者代码的末尾时,Facebook强制刷新。

<div class="fb-share-button" data-href="http://mywebsite.com/facebookMeta.php?<?php echo(microtime());?>" >  </div>