캐시를 지우지 않는 Facebook Open Graph


174

Open Graph에서 메타 태그에 문제가 있습니다. 페이스 북이 내 메타 태그의 오래된 값을 캐싱하는 것처럼 보입니다. 속성에 대한 이전 값 og:title과는 og:url아직도 내가 이미 변경 한 경우에도 사용된다.

내 사이트의 페이지에서 Lint를 실행 했는데 다음과 같이 나타납니다.

Facebook Open Graph 린트 스크린 샷

og:titleog:url에 대한 두 개의 값이 있으며 마지막 값 이 우선합니다. 그러나 마지막 두 항목은 이 사이트에 사용한 OLD 항목 입니다. 현재이 메타 태그를 사용하고 있습니다 (HTML 소스를 볼 수 있는지 확인할 수 있습니다).

<meta property="og:title" content="Smart og rummelig pusletaske fra Petit Amour med god plads til alt &#8211; værdi 1.099 kr &#8211; 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" />

왜 페이스 북은 캐싱 og:titleog:url? 누구든지 같은 문제가 있습니까?


나는 이것이 역사와 같다고 생각합니까? 나는 최근 점점 FB를보고 있어요 title그리고 url왜 귀찮게합니다 (정보 테이블에) 당신을?
ifaour

문제는 facebook Like count가 여전히 pinq.dk/tilbud/landsdaekkende/lissy에 대한 계산과 대조적으로 약 200+ 인 OLD og : url ( pinq.dk )에 대한 것입니다
Ardee Aram

나는 이것이 역사라고 생각하지 않습니다. 더 많은 og : url이 두 번 설정되어 있으며 마지막은 가장 많이 사용 된 것입니다. 어떻게 든 코드에서 이미 제거 된 이전 값은 여전히 ​​메타 값에 영향을줍니다.
Ardee Aram

3
음, 읽기가 . 특히 메타 태그 편집 섹션. 관련이 있는지 확실하지 않지만 도움이 될 수 있습니다. 나중에 확인하겠습니다, 미안 친구!
ifaour

2
아마 그거야. "페이지의 <meta> 태그를 업데이트하여 페이지 속성을 업데이트 할 수 있습니다. og : title 및 og : type은 처음에 편집 할 수 있습니다. 페이지에서 50 개의 좋아요를받은 후 제목이 고정되고 페이지가 10,000 개의 좋아요를받은 후 이 속성은 페이지가 이미 마음에 들었던 놀라운 사용자를 피하기 위해 수정되었습니다. 이러한 제한에 도달 한 후 제목이나 유형 태그를 변경해도 아무런 변화가 없으며 페이지에는 원래 제목과 유형이 유지됩니다. " ifaour 감사합니다!
Ardee Aram

답변:


304
  1. http://developers.facebook.com/tools/debug로 이동 하십시오
  2. 다음에 URL을 입력하십시오. fbrefresh=CAN_BE_ANYTHING

예 :

  1. http://www.example.com?fbrefresh=CAN_BE_ANYTHING
  2. http://www.example.com?postid=1234&fbrefresh=CAN_BE_ANYTHING
  3. 또는 방문 : http://developers.facebook.com/tools/debug/og/object?q=http://www.example.com/?p=3568&fbrefresh=89127348912

지난 밤에 같은 문제가 발생했으며 일부 웹 사이트 에서이 솔루션을 얻었습니다.

Facebook은 캐시 축소판을 저장합니다. 서버에서 썸네일 / 이미지를 삭제하더라도 새로 고쳐지지 않습니다. 그러나 Facebook을 사용하면fbrefresh

이게 도움이 되길 바란다.


30
디버그 도구가없는 개체를 새로 고치 므로 param fbrefresh 가 필요하지 않을 수 있습니다.
alexandru.topliceanu

7
이 매개 변수를 사용하지 않으면 캐시를 지우지 않습니다.
Umur Kontacı

26
사실, 해당 매개 변수를 추가해도 디버그 도구의 작동에는 아무런 영향이 없습니다. 디버그 도구 또는 스크레이퍼 코드에는 해당 매개 변수에 대한 참조가 없습니다
Igy

7
fbrefresh 매개 변수를 사용할 필요는 없지만 해당 도메인을 소유 한 FB 앱의 관리자로 로그인해야합니다. 그렇지 않으면 캐시가 업데이트되지 않습니다.
Felipe Brahm

3
fbrefresh 매개 변수를 추가하면 효과가 있는지 확인할 수 있습니다. URL을 공유하면 디버거가 올바른 데이터를 표시했지만 이전 데이터를 사용했습니다. 그러나 fbrefresh 매개 변수와 함께 디버거를 사용하면 일반 공유조차도 올바른 데이터를 사용했습니다.
아이스크림

82

가장 많이 투표 된 질문은 매우 구식입니다.

다음은 2014 년 11 월 현재 사용해야하는 두 가지 옵션입니다 .

개발자가 아닌 경우

  1. FB 디버거를 사용하십시오 : https://developers.facebook.com/tools/debug/og/object
  2. 다시 캐시하려는 URL을 붙여 넣습니다. (og : url 태그에 포함 된 것과 동일한 URL을 사용해야합니다)
  3. 다시 스크래치 정보 가져 오기 버튼을 클릭하십시오

개발자를위한

  1. https://graph.facebook.com/?id=[YOUR_URL_HERE]&scrape=true ( https://developers.facebook.com/docs/games_payments/takingpayments#scraping 참조 )를 프로그래밍 방식으로 GET 호출 하십시오.
  2. 해당 페이지의 헤드에 포함 된 og : url 태그가 전달중인 태그와 일치하는지 확인하십시오.
  3. json 응답을 구문 분석하여 해당 URL의 공유 수를 얻을 수도 있습니다.

이미지 업데이트에 대한 추가 정보

  • og : image URL은 동일하지만 이미지가 실제로 변경된 경우 위의 작업을 수행하더라도 Facebook 스크레이퍼가이를 업데이트하거나 다시 캐시하지 않습니다. (이미지 URL 끝에? last_update = [TIMESTAMP]를 전달해도 작동하지 않습니다).
  • 나를위한 유일한 효과적인 해결 방법은 이미지에 새로운 이름을 할당하는 것입니다.

이전에 게시 한 게시물의 이미지 또는 비디오 업데이트에 관한 참고 사항 :

  • 디버거를 호출하여 페이지의 og : tags에서 변경 내용을 스크랩하면 해당 URL의 모든 이전 Facebook 공유에 여전히 이전 이미지 / 비디오가 표시됩니다. 이전 게시물을 모두 업데이트하는 방법은 없으며 보안상의 이유로 의도적으로 설계된 방식입니다. 그렇지 않으면 누군가가 사용자가 실제로하지 않은 것을 공유 한 것처럼 가장 할 수 있습니다.

내 페이지의 공유 수를 반환하지 않는 것 같습니다. 이 게시물에서 읽은 " stackoverflow.com/questions/3581488/… "이 엔드 포인트 출력에 정보가 포함되도록하려면 페이지에 Facebook 좋아요 / 공유 버튼이 있어야합니다.
WillyBurb

태그가 페이지의 BODY가 아닌 HEAD에 있는지 확인하십시오. 디버거가이를 경고하지만 무시합니다 (예,이 점을 강조하고 싶었습니다)
Simon_Weaver

@Oriol Esteban 이미지를 업데이트하는 다른 방법을 찾았습니까?
Petr

3
@Oriol 최근에 이것을 시도했을 때 ( developers.facebook.com/docs/sharing/opengraph/…에 따라 ) 이 URL에 게시물을 게시해야했습니다.
Glen T

1
og : url의 URL을 변경할 때 캐시를 긁는 방법에 대한 아이디어 내 비디오를 약간 편집하고 URL을 변경했으며 페이스 북은 계속 이전 버전을 보여줍니다! 분명히 디버그에서 스크래치 (정확하게 표시됨)를했지만 게시물에는 없었습니다! ...이 날 미치게 해요!
RayOnAir

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"필드 및 기타 유용한 정보가 있습니다.


이것은 나를 위해 이미지 캐시를 파괴하는 유일한 일관된 솔루션이었습니다. 사용 fbrefresh하는 것이 내 문제에 아무런 영향을 미치지 않았습니다.
헬라 탄

안녕하세요,이 방법을 시도하고 있지만 $ this-> output ( '<script type = "text / javascript"> $ (document) .ready (function () {$ .post ( " graph .facebook.com ", {id :" '. $ this-> content ['canonical '].' ", 스크랩 : true}, function (response) {console.log (response);});}); < / script> ');
monsterboy

Uncaught ReferenceError : $가 정의되지 않았습니다 (익명 함수). 어떤 도움을 주시면 대단히 감사하겠습니다 :)
monsterboy

@monsterboy $-이것은 jQuery 함수에 대한 바로 가기입니다. $ .post ()는 jQuery.post ()와 같습니다.이 라이브러리를 사용하려면 먼저 가져와야합니다 : <script src = " code.jquery.com/jquery-latest.min.js"type = "text / javascript "> </ script>
Zhorzh Alexandr

@ZhorzhAlexandr 당신의 대답에 대한 thx하지만 wordpress를 사용하는 메신저와 매일 편집 할 수있는 게시물이 하나 있습니다. 그래서 공유하기 전에 매번이 스크립트를 어떻게 사용할 수 있습니까?
Antwan

12

fbrefresh 변수를 전달하더라도 OG 축소판 그림이 새로 고쳐지지 않습니다. 자동 지우기를 기다리지 않고이를 업데이트하려면 축소판 관련 메타 태그 값의 파일 이름을 변경하고 새로 고쳐야합니다.


다른 답변에 따르면 fbrefreshURL 매개 변수를 사용하여 강제로 새로 고칠 수 있습니다 .
Sam Mussmann

1
@SamMussmann 이것은 OG 태그 내용의 캐시를 새로 고치며, 해당 내용의 URL에서 찾은 실제 이미지는 아닙니다. EG : OG 태그는 동일하게 유지하지만 이미지 파일을 변경하고 (이름은 동일하게 유지) 이미지 자체는 캐시에 유지됩니다. Seb이 말했듯이 이미지 파일 이름을 변경해야한다고 말하면서 이것을 구별 할 수있는 방법을 찾지 못했습니다.
Nick M

@Nick M 다른 솔루션을 찾았습니까?
Petr

해결되었습니다. 태그를 생성하는 PHP 스크립트의 이미지 URL에? t = TIMESTAMP를 추가하여 문제를 해결했습니다. 지금은 작동합니다.
Petr

이미지 파일 이름을 바꾸고 메타 태그 값을 업데이트했지만 작동하지 않았습니다.
Antonio Ooi

7

나는 사용하여 동일한 문제가 있었다 og:image페이스 북의 디버거 또는 실제 계정을 통해 테스트를 통해 하나가 작동하지 않은 파일이나 명확한 FB 캐시의 이름을 바꾸려면, 몇 가지 시도를.

새로운 페이스 북의 가이드 라인은 이미지 크기가 1200 X 630해야한다 상태 또는 화면 비율을 가지고, 이것은 나를 위해 일한 유일한 것은이있는 이미지 사용 된 잘못된 것 같다 사각형 크기를 .

편집 * 1200 x 630을 사용하기 위해 되돌아온 몇 시간이 걸렸으며 마술처럼 작동했습니다.

또한 파일 이름을 f * ^ * kfacebook.jpg로 바 꾸었습니다. 확실하지는 않지만 기분이 좋았습니다.


6

기본적으로 대답은 인내심입니다.)

오늘 아침 Linter를 확인했는데 중복 값없이 og : title 및 og : url이 올바르게 표시됩니다. FaceBook은 특정 간격으로 캐시를 자동으로 지 웁니다. 기다려야 해요

여기에 이미지 설명을 입력하십시오


에서 개발자를위한 페이스 북 , 객체 캐시는 7 일마다 만료하고, 다음에 사용되는 경우 페이스 북은 자동으로 객체를 스크랩하는 것입니다.
Venugopal

4

실제 URL에는 쿼리 문자열이 있었기 때문에 올바른 URL을 보풀하지 않았습니다 (봇은 다른 페이지까지 봇과 관련이 있습니다).

http://example.com/

! ==

http://example.com/?utm_campaign=foo

린터 페이지 다시 캐시하므로 기다릴 필요가 없습니다.



4

Ooook, 마침내 도움이되었습니다 (IP.Board를 사용합니다). 내가해야 할 일은 :

  1. 내 웹 사이트에서 og : image의 URL을 변경하십시오 (일반 구성).
  2. ? fbrefresh = 1154464gd56으로이 방법을 사용해보십시오.

이 글의 작성자에게 감사합니다!

편집 : 이미지 요구 사항에 대해 더 기억해야 할 것이 있습니다. 현재 (2013 년 1 월) :-양방향에서 최소 200px-최대 비율 3 : 1



3

한 가지 더하면 URL은 대소 문자를 구분 합니다. 참고 :

apps.facebook.com/ HELLO

린터의 눈이 다르면

apps.facebook.com/ hello

앱의 개발자 설정에 입력 한 정확한 사이트 URL을 사용해야합니다. 린 터는 그렇지 않으면 속성을 반환하지만 캐시를 새로 고치지는 않습니다.


3

죄송 합니다만 정답은 다음과 같습니다.

열린 그래프 og : image url을 즉각적인 결과로 업데이트하는 어리석은 방법은 없습니다. fb가 업데이트 될 때까지 캐시됩니다 (24 시간마다보고)

다음은 다른 사람들에 의해 작동한다고보고되었지만 그중 하나에서 ZERO 성공을 거두었습니다.

  • "새 스크랩 정보 가져 오기"선택
  • 실제 이미지 파일 이름 변경 및 / 또는 원본 삭제
  • PHP TIMESTAMP 또는? anything을 추가하여 이미지 URL에 쿼리 문자열 추가
  • "... yoursite.com/?fbrefresh=anything"쿼리 문자열을 디버거 페치 URL에 추가
  • og dev 페이지 하단에서 그래프 API 링크 선택
  • 스크레이퍼가 보는 것을 정확하게 선택하면 캐시되지 않은 실시간 스크랩 데이터를 요청하지 않는 것처럼 보이지만 파일이 더 이상 존재하지 않더라도 캐시 된 이미지 URL이 계속 표시됩니다.

브라우저 캐시 또는 일부 캐싱 서비스에 문제가 없는지 확인하기 위해 항상 코드를 검사해야합니다. 메타 정보가 코드에 최신 상태이고 다른 제안이 실현되지 않는 한 위의 모든 사항을 시도한 경우 정답은 기다릴 수밖에 없습니다 .


1

이미지가 72dpi 인 경우 이미지 크기 오류가 발생한다는 것을 알았습니다. 대신 96dpi를 사용하십시오. 도움이 되었기를 바랍니다.


1
  1. http://developers.facebook.com/tools/debug로 이동 하십시오

  2. 페이지의 URL에 붙여 넣고 디버그를 클릭하십시오. 사이트에서 URL 별칭을 사용하는 경우 Facebook에서 공유하는 페이지에 사용하는 것과 동일한 URL을 사용해야합니다 (예 : Drupal에서 해당 URL을 통해 페이지를 공유하는 경우 별칭 대신 노드 / * 경로 사용).

  3. "공유 대화 상자에서 이것을보십시오"링크에서 "공유 미리보기"부분을 클릭하십시오.

최고의 솔루션! 감사합니다
MeV


0

비슷한 경험을했습니다. 웹 사이트 링크에서 페이스 북이 생성 한 미리보기에 404가 표시되었습니다. og : url 메타 데이터가 잘못되었습니다. 며칠 전에 이미 수정했지만 미리보기에서 404가 계속 표시됩니다. 우리는 https://developers.facebook.com/tools/debug/ 에서 도구를 사용했고 새로 고침을 강제했습니다 (방법에 따라 매개 변수를 추가 할 필요가 없었습니다) 우리의 경우 Facebook은 24 후 캐시를 새로 고치지 않았습니다 그러나 도구는 그것을 강제하는 데 도움이되었습니다.


0

캐시는 자주 새로 고침되는 캐시이므로 캐시가 가끔씩 수행됩니다. 따라서 기다리는 것이 결국에는 효과가 있지만 때로는 더 빨리해야합니다. 파일 이름을 변경하면 작동합니다.


왜 -1입니까? 말 그대로 FILENAME을 변경하는 가장 간단한 해결책에 아무도 대답하지 않았으며 실제로는 그렇지 않았지만 구식 인 다른 (+/- 5) 투표와 다르게 작동합니다. 어떤 이유로 파일 이름을 변경할 수없는 경우이 답변은 도움이되지 않습니다.
Srneczek

0

나는이 문제도 가지고 있었다. 스크레이퍼에 올바른 정보가 표시되지만 공유 URL은 여전히 ​​이전 데이터로 채워졌습니다.

이 문제를 해결하는 방법은 공유 대신 피드 방법을 사용한 다음 수동으로 데이터를 채우는 것입니다 (공유 방법으로 노출되지 않음).

이 같은:

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'
  });
};

0

정말 쉽게 해결합니다. 테스트하고 작동합니다. 메타 태그를 업데이트 할 때 새 URL을 생성하면됩니다. URL에 "& cacheBuster = 1"을 추가하는 것만 큼 간단합니다. 메타 태그를 변경하는 경우 "& cacheBuster = 2"

원래 URL

www.example.com

og 메타 태그가 업데이트 될 때의 URL :

www.example.com?cacheBuster=1

og 메타 태그가 다시 업데이트 될 때의 URL :

www.example.com?cacheBuster=2

Facebook은 각각을 새로운 URL로 취급하고 새로운 메타 데이터를 얻습니다.


0

몇 년이 지난 후에도 이것은 여전히 ​​일반적인 문제이지만 항상 페이스 북의 캐시는 아닙니다 : 그것은 종종 사람의 실수입니다 (정교하게 만들 수 있습니다)

OG : TYPE은 이미지 스크랩에 영향을줍니다.

  1. https://ogp.me/#type_article https://ogp.me/#type_website 와 동일하지 않습니다

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 /
- 인체 공학적 : /sub-page//child-2/상속 할 og:image부모를

그것들은 "모든 웹 사이트"가 아니며, 1은 웹 사이트이고, 다른 하나는 기사입니다.

당신이 그렇게하면 페이스 북은 그 모든 것들이 정식이라고 생각하고 FIRST og : image를 그들 모두에 넣을 것입니다. (시도해보십시오)-og : url을 루트 또는 상위 도메인으로 설정하면 페이스 북에 모두 정식 도메인이라고 말한 것입니다. (그 이유는 있지만 그 주제는 아닙니다)

이 솔루션을 고려하십시오 (대부분의 사람들이 "실제로 원하는 것")

- <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에서 새로운 이미지를 긁어내는 데 훨씬 적은 문제가 발생합니다.

끝으로, YES 캐시 동무, 임의 바르, 변화하는 URL을 제안 여기서 일 수 있지만처럼 보일 것 "간헐적 부두" 이 경우 og:type제대로 지정되어 있지 않습니다.

추신 : CDN 또는 서버 사이드 캐시는 "생각"하더라도 최신 버전을 볼 수 있다고해도 Facebook의 스크레이퍼에 제공됩니다. (나는 두 번 확인하지 않으면 엄청난 시간을 낭비 할 것이라고 지적하는 것 외에 다른 시간을 소비하지 않을 것입니다.)


0

최근 Facebook과는 다르지만 비슷한 문제가 있었고 언급 한 스크레이퍼 / 디버그 페이지가 단순히 전체 페이지를 읽지 않는 것으로 나타났습니다. Open Graph의 메타 속성은 헤드 섹션에서 더 아래로 내려 갔으며 스크레이퍼는 이미지 사양이 올바르지 않다는 것을 지속적으로 알리고 캐시 된 버전을 사용합니다. Open Graph 태그를 페이지 맨 위 근처의 코드에서 더 위로 이동 한 다음 모든 것이 완벽하게 작동했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.