Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 由GET参数生成的图像。如何在共享图像之前强制facebook sharer清除缓存?_Php_Facebook - Fatal编程技术网

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

Php 由GET参数生成的图像。如何在共享图像之前强制facebook sharer清除缓存?,php,facebook,Php,Facebook,我正在根据url中的GET参数生成一个图像,将它们组合在一起,然后在facebook共享器中共享该图像。但是,facebook似乎会缓存图像,除非我在调试器工具中手动清除缓存 在分享之前,我需要一种清除facebook缓存的方法。这可能吗 在本例中,我将对GET参数进行硬编码,但在实际情况中,它将基于选定的选项 代码: <?php $img1= 'images/img1.png'; $img2 = 'images/img2.png'; $query = 'i

我正在根据url中的GET参数生成一个图像,将它们组合在一起,然后在facebook共享器中共享该图像。但是,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!" /> 
 <?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);
    ?>

我想出来了。我需要在facebook共享代码的末尾添加微时间(根据Marc B的建议)。因此,我的代码的结构是fb sharer代码在一个页面上,它在另一个页面上引用元数据。当我将微码查询添加到共享代码的末尾时,facebook强制刷新

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

将缓存buster值放入url?e、 g.
“script.php?foo=”。微时间(真)?这将使每个url看起来都是唯一的,并防止farcebook缓存它。缓存buster与“?foo=”部分或“microtime(TRUE)”部分有关吗?什么是微时间?主要是微时间位。它将添加一个每次都不同的数字,因此每个url看起来都是唯一的。e、 g.
script.php?foo=123.456
,然后
script.php?foo=123.457
,等等……它似乎通过忽略查询参数来缓存页面。如果它缓存script.php?foo=123,我就可以了,但是当我将查询更改为script.php?foo=456时,它仍然会像foo=123一样显示图像。只有在我手动强制调试器清除时,它才会提取新的查询参数。不过,我喜欢你的建议,以后我会记住这一点。