我在使用Open Graph的meta标签时遇到麻烦。好像Facebook正在缓存我的meta标签的旧值。属性og:title
和og:url
的旧值仍在使用,即使我已经更改了它们。
我在a page in my site上运行了Lint,然后出现了:
请注意,og:title
和og:url
有两个值,最后一个值占优势。但是,最后两个条目是我用于此网站的旧条目。我现在正在使用这些元标记(您可以验证是否查看HTML的来源):
<meta property="og:title" content="Smart og rummelig pusletaske fra Petit Amour med god plads til alt – værdi 1.099 kr – køb nu kun 599 kr "/>
<meta property="og:description" content="Pinq.dk - Det gode liv for det halve"/>
<meta property="og:type" content="product"/>
<meta property="og:url" content="http://pinq.dk/tilbud/landsdaekkende/lissy/"/>
<meta property="og:image" content="http://pinq.dk/wp-content/themes/pinq/images/logo-top.png"/>
<meta property="og:site_name" content="Pinq" />
<meta property="fb:app_id" content="161840830532004" />
为什么Facebook缓存og:title
和og:url
?是否有人遇到过同样的问题?
答案 0 :(得分:299)
fbrefresh=CAN_BE_ANYTHING
<强>示例:强>
http://www.example.com?fbrefresh=CAN_BE_ANYTHING
http://www.example.com?postid=1234&fbrefresh=CAN_BE_ANYTHING
http://developers.facebook.com/tools/debug/og/object?q=http://www.example.com/?p=3568&fbrefresh=89127348912
昨晚我遇到了同样的问题,我从一些网站上得到了这个解决方案。
Facebook保存您的缓存缩略图。即使您从服务器中删除了thumnail / image,它也不会刷新。但Facebook允许您使用fbrefresh
我希望这会有所帮助。
答案 1 :(得分:78)
投票最多的问题已经过时了:
这是 2014年11月:
中应该使用的唯一两个选项答案 2 :(得分:19)
如果您有许多页面并且不想手动刷新它们 - 您可以自动执行此操作。
假设您有包含照片的用户个人资料页面:
$url = 'http://'.$_SERVER['HTTP_HOST'].'/'.$user_profile;
$user_photo = 'http://'.$_SERVER['HTTP_HOST'].'/'.$user_photo;
<meta property="og:url" content="<?php echo $url; ?>"/>
<meta property="og:image" content="<?php echo $user_photo; ?>"
只需将其添加到您的页面:
// with jQuery
$.post(
'https://graph.facebook.com',
{
id: '<?php echo $url; ?>',
scrape: true
},
function(response){
console.log(response);
}
);
// with "vanilla" javascript
var fbxhr = new XMLHttpRequest();
fbxhr.open("POST", "https://graph.facebook.com", true);
fbxhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
fbxhr.send("id=<?php echo $url; ?>&scrape=true");
这将刷新Facebook缓存。如果您使用jQuery解决方案,请查看console.log中的“response” - 您将找到“updated_time”字段和其他有用信息。
答案 3 :(得分:11)
即使传递fbrefresh变量,OG缩略图似乎也不会刷新。 要在不等待自动清算的情况下进行更新,您需要更改缩略图关联元标记值的文件名并刷新。
答案 4 :(得分:6)
基本上,答案是耐心;)
今天早上我检查了Linter,并且og:title和og:url正确显示,没有多余的值。我猜FaceBook会在某个特定的时间间隔自动清除缓存。我只需要等待。
答案 5 :(得分:6)
我使用og:image
遇到了同样的问题,多次尝试重命名文件或清除FB缓存都无法通过facebook调试器或通过实际帐户进行测试。
新的Facebook指南规定图像尺寸应为1200 x 630或具有该宽高比,这似乎是错误的,唯一对我有用的是使用方形尺寸的图像。
编辑* 我花了几个小时才回到使用1200 x 630并且神奇地工作,这很神奇。
我还将文件重命名为f * ^ * kfacebook.jpg,不确定它是否有帮助,但感觉很好。
答案 6 :(得分:4)
我们刚刚碰到了这个,事实证明,我们并没有找到正确的网址,因为真正的网址有一个查询字符串(对于机器人来说,duh,不同的页面)。
http://example.com/
!==
http://example.com/?utm_campaign=foo
linter 将重新缓存您的页面,您无需等待。
答案 7 :(得分:4)
是的,Facebook会每24小时自动清除一次缓存:实际上Facebook每隔24小时就会抓取一次页面并更新缓存https://developers.facebook.com/docs/reference/plugins/like/#scraperinfo。
答案 8 :(得分:4)
Ooook,最后它有所帮助(我使用IP.Board)。我必须做的是:
感谢这个帖子的作者!
编辑:您还需要记住图像要求。现在(2013年1月)它是: - 两个方向至少200 px - 最大比例3:1
答案 9 :(得分:4)
答案 10 :(得分:3)
要添加一件事,网址区分大小写。请注意:
apps.facebook.com/的 HELLO 强>
在linter的眼睛中是不同的
apps.facebook.com/ 你好
请务必使用在应用的开发者设置中输入的确切网站网址。 linter将以其他方式返回属性,但不会刷新缓存。
答案 11 :(得分:3)
我很抱歉,但正确答案是:
没有万无一失的方法可以立即更新打开的图形og:image url。它被缓存直到fb更新(据报道每24小时)
以下是其他人报告过的事情,但我在其中任何一个都取得了成功。
检查您的代码始终是确定它不是浏览器缓存或某些缓存服务问题的方法。如果您的代码中的元信息是最新的,并且您已经尝试了以上所有内容(除非另一个建议实现),正确的答案是您只能等待。< / p>
答案 12 :(得分:1)
粘贴到页面的网址中,然后点击调试。如果您的网站使用网址别名,请确保您使用与Facebook相同的网址 用于您正在共享的页面(例如:在Drupal中使用 如果通过该页面共享页面,则节点/ *路径而不是别名 URL)。
答案 13 :(得分:1)
Facebook开发者文档称title属性有例外:
一旦与50个动作(喜欢,分享和评论)相关联 一个对象,你将无法更新其标题
https://developers.facebook.com/docs/sharing/opengraph/using-objects#update
答案 14 :(得分:1)
我发现如果你的图像是72dpi,它会给你图像尺寸错误。请改用96dpi。希望这会有所帮助。
答案 15 :(得分:0)
I was having this issue too. The scraper shows the right information, but the share url was still populated with old data.
The way I got around this was to use the feed method, instead of share, and then populate the data manually (which isn't exposed with the share method)
Something like this:
shareToFB = () => {
window.FB.ui({
method: 'feed',
link: `signup.yourdomain.com/?referrer=${this.props.subscriber.sid}`,
name: 'THIS WILL OVERRIDE OG:TITLE TAG',
description: 'THIS WILL OVERRIDE OG:DESCRIPTION TAG',
caption: 'THIS WILL OVERRIDE THE OG:URL TAG'
});
};
答案 16 :(得分:0)
它是一个缓存,它刷新,这是缓存意味着偶尔做的事情。所以等待最终会有效,但有时你需要更快地做到这一点。更改文件名有效。
答案 17 :(得分:0)
有类似的经历。网站链接在facebook生成的预览中显示404。结果显示og:url元数据错误。几天前我们已经修好了,但预览中仍然看到了404。我们使用https://developers.facebook.com/tools/debug/处的工具强制刷新(顺便说一下,不必添加任何参数) 在我们的案例中,Facebook在24小时后没有刷新缓存,但该工具帮助强制它。
答案 18 :(得分:0)
对我来说,所有解决方案都不起作用。我发现如果你使用 Wordpress和Yoast SEO 那么你必须刷新这两个标签:
<meta property="article:modified_time" content="2017-09-29T00:37:33+02:00" />
<meta property="og:updated_time" content="2017-09-29T00:37:33+02:00" />
要刷新值,您必须向文章提交任何更改。如果你不改变这个日期,那么facebook缓存不会刷新。
您还可以通过在functions.php
中添加过滤器来停用此附加标记:
add_filter( 'wpseo_og_article_published_time', '__return_false' );
add_filter( 'wpseo_og_article_modified_time', '__return_false' );
add_filter( 'wpseo_og_og_updated_time', '__return_false' );
答案 19 :(得分:0)
真的很容易解决。经过测试和工作。您只需在更新元标记时生成一个新的url。就像在您的网址中添加“&cacheBuster = 1”一样简单。如果更改元标记,只需增加“&cacheBuster = 2”
原始URL
www.example.com
更新og元标记的网址:
www.example.com?cacheBuster=1
重新更新og元标记的网址:
www.example.com?cacheBuster=2
Facebook将把每个人都当作一个新的URL并获取新的元数据。
答案 20 :(得分:0)
几年后,这仍然是一个普遍的问题,但它并不总是在Facebook的缓存中出现:它经常是人为错误(请允许我详细说明)
OG:TYPE会影响您的图像抓取:
请注意og:type = website将导致该URL的任何/ sub-pages /变为“规范”。这意味着无论您做什么,都将难以使用刮板更新图像。
考虑此“假设和常见错误”
-<meta property="og:type" content="website" />
=> https://www.example.org(父)
-<meta property="og:type" content="website" />
=> https://www.example.org/sub-page/
-<meta property="og:type" content="website" />
=> https://www.example.org/sub-page/child-2/
-Ergo:/sub-page/
和/child-2/
将继承父级的og:image
那些不是“所有网站”,1是一个网站,其他是文章。
如果您这样做,Facebook会认为所有这些都是规范的,并将FIRST og:image纳入所有这些内容。 (尝试一下,您会看到)-如果将og:url设置为您的根域或父域,您已经告诉facebook它们都是规范的。 (有充分的理由,但这是题外话)
考虑此解决方案(这是大多数人“真正想要的”东西)
-<meta property="og:type" content="article" />
=> https://www.example.org/sub-page/
-<meta property="og:type" content="article" />
=> https://www.example.org/sub-page/child-2/
如果您现在这样做,Facebook在刮取新图像方面将为您带来的麻烦要少得多。
最后,是,缓存破坏器,随机变量,更改URL和建议在这里可以使用,但是如果未正确指定og:type
,它们看起来像“间歇伏都教徒” 。
PS:请记住,即使您“认为”可以看到最新版本,CDN或服务器端缓存也将服务于Facebook的抓取工具。 (除了指出这一点,如果不仔细检查,这将浪费您大量的时间。)
答案 21 :(得分:0)
我最近在Facebook上遇到了一个不同但类似的问题,发现提到的刮板/调试页面似乎根本无法读取任何页面。我在Open Graph的元属性位于标题的下端,并且抓取工具会不断通知我图像规范不正确,并且无论如何都将使用缓存的版本。我将Open Graph标签在代码中移到页面顶部附近,然后每次都运行良好。
答案 22 :(得分:0)
我在fb和twitter上缓存旧的元数据时遇到了同样的问题,这让我不知所措,因为我继续编辑代码但没有任何变化。我终于发现他们缓存了我的第一个请求。在网址中添加查询字符串只能用于twitter,但不能用于fb(对我而言)。