如何在共享图像和文本时清除Facebook缓存

时间:2014-02-18 06:57:59

标签: facebook wordpress facebook-graph-api share cache-control

我正在使用Wordpress,并且正在发生一种紧张的事情。我之前已经分享了一个链接,当图像改变后,它现在有了不同的图像。当Facebook共享时,它正在拍摄相同的先前图像。让我告诉你我尝试了什么程序

主管科

<meta property="og:title" content="<?php echo $blogArray['post_heading'];?>" />
<meta property="og:type" content="article" />
<meta property="og:image" content="<?php echo $blogArray['image_url'];?>" />
<meta property="og:url" content="<?php echo site_url().'?page_id=3205&id='.base64_encode($blogArray['ID']);?>" />
<meta property="og:description" content="<?php echo $blogArray['post_sort_details'];?>" />

和HTML

http://www.facebook.com/sharer.php?s=100;&amp;p[title]=<?php echo $blogArray['post_heading'];?>&amp;p[summary]=<?php echo $blogArray['post_sort_details'];?>&amp;p[url]=<?php echo 'http://'.str_replace('http://','',str_replace('www.','',site_url()));?>/?p=<?php echo $blogArray['share_post_id'];?>&amp;p[images][0]=<?php echo $blogArray['image_url'];?>" target="_blank"><img src="<?php bloginfo('template_url');?>/images/fb_static.png" border="0" class="fb"  title="Share via Facebook" width="24" height="24" /></a>

但是,当我在测试文件夹上的同一个网站上尝试时,它会变得非常好。

我附上截图。

What I want to share 我要分享的内容

What is getting shared from the Main Site 什么是从主站点共享

What is getting shared from the Beta site and the right one 什么是从Beta站点和正确的站点共享

我曾经看过一个帖子在Facebook上分享。 Facebook将图像和文本保存到缓存中,甚至在更改图像和文本时,Facebook共享保留以前的身份。这是我面临的主要问题,并希望通过在分享后用当前文本和图像重新加载Facebook缓存来解决。

3 个答案:

答案 0 :(得分:2)

林果皞是对的。您可以通过Facebook的调试工具刷新缓存。只需将URL放在您要共享的调试器工具上即可。

您也可以在站点上使用此脚本,因为您不需要转到调试器工具并手动刷新页面。以下代码自动刷新Facebook页面。

$.post(
    'https://graph.facebook.com',
    {
        id: '[PAGE_URL]',
        scrape: true
    },
    function(response){
       console.log(response);
    }
);

答案 1 :(得分:0)

我正试着解决这个问题。小时和小时的故障排除无济于事。在与我们的一位程序员谈论一个不相关的主题后,我想到了一些尝试作为远景。

令我惊讶的是,它起作用了!!!

这就是问题的原因和我的解决方案:

当您在WordPress中草稿帖子时,它会根据您文章的标题生成一个链接(除非您手动更改它)。我的文章标题包含特殊字符,但是自动生成的链接没有显示这些特殊字符,只显示连字符以替换空格。应该没事吧?错误!嵌入在WordPress平台中的元数据和代码中的某些地方是那些特殊字符,它们弄乱了Facebook从链接到的文章中提取信息的方式。这是一个问题,因为某些特殊字符会使超链接无效。

例如:

文章标题:R [eloaded] 自动生成的超链接在WordPress“永久链接”字段中显示:http://www.example.com/reloaded 实际的WordPress自动生成的超链接:http://www.example.com/r[eloaded]

这些括号将使链接无效,Facebook将无法从中提取任何信息(即图片)。

解决方案:

(1)只需手动将WordPress超链接地址更改为不包含任何特殊字符的内容(这不会更改文章的标题)。

(2)点击“更新”更改帖子以包含新的超链接。

(3)在WordPress窗口中单击“从缓存中清除”

(4)刷新您的Facebook浏览器窗口

(5)粘贴文章的新超链接

(6)享受带有预览图像和信息的Facebook帖子

旁白:不要把头发拉过Facebook,这是不值得的。 =)

答案 2 :(得分:0)

我尝试了很多以编程方式清除缓存。我们可以使用facebook调试器手动清除缓存。但是,当我们在http://myurl.com/?fbrefresh=xyz之类的网址之后保留任何参数时,它会起作用。但是,手动清除缓存并不简单,我们每次都不能这样做。

最后,它已经使用了javascript。这就像我在上面提到的网址之后放置参数一样有效。

if(window.location.search.indexOf("facebook_refresh") >= 0) {
    //Feature check browsers for support
    if(document.addEventListener && window.XMLHttpRequest && document.querySelector) {
        //DOM is ready
        document.addEventListener("DOMContentLoaded", function() {
            var httpRequest = new XMLHttpRequest();
            httpRequest.open("POST", "https://graph.facebook.com", true);

            httpRequest.onreadystatechange = function () {
                if (httpRequest.readyState == 4) { 
                    console.log("httpRequest.responseText", httpRequest.responseText); 
                }
            };

            //Default URL to send to Facebook
            var url = window.location;

            //og:url element
            var og_url = document.querySelector("meta[property='og:url']");

            //Check if og:url element is present on page
            if(og_url != null) {
                //Get the content attribute value of og:url
                var og_url_value = og_url.getAttribute("content");

                //If og:url content attribute isn't empty
                if(og_url_value != "") {
                    url = og_url_value;
                } else {
                    console.warn('<meta property="og:url" content=""> is empty. Falling back to window.location');
                }               
            } else {
                console.warn('<meta property="og:url" content=""> is missing. Falling back to window.location');
            }

            //Send AJAX
            httpRequest.send("scrape=true&id=" + encodeURIComponent(url));
        });
    } else {
        console.warn("Your browser doesn't support one of the following: document.addEventListener && window.XMLHttpRequest && document.querySelector");
    }
}