วิธีล้างแคช Facebook Sharer


116

เราใช้ลิงค์:

http://www.facebook.com/sharer.php?u=[shared URL]

... เพื่อแบ่งปันหน้าใดหน้าหนึ่ง อย่างไรก็ตาม Facebook Sharer ใช้รูปภาพและชื่อในเวอร์ชันแคช มีวิธีล้างแคชของ Facebook อย่างรวดเร็วหรือไม่หรือเราต้องรอนานแค่ไหนจนกว่าข้อมูลจะได้รับการอัปเดต?

ฉันวางไว้<link rel='image_src' href='[preview image]' />ระหว่างแท็ก

คำตอบ:


237

ฉันพบวิธีแก้ปัญหาของฉัน คุณสามารถไปที่ไซต์นี้:

https://developers.facebook.com/tools/debug

... จากนั้นใส่ URL ของหน้าที่คุณต้องการแชร์แล้วคลิก "debug" มันจะดึงข้อมูลทั้งหมดในเมตาแท็กของคุณโดยอัตโนมัติและล้างแคชด้วย


1
มีวิธีรับสิ่งเดียวกัน แต่อัตโนมัติด้วย javascript หรือไม่? ไซต์ของฉันมีหน้าที่สามารถเปลี่ยนชื่อได้บ่อยครั้ง ฉันไม่อยากรอ 24 ชั่วโมงของการรีเซ็ตแคชของ Facebook และฉันก็ไม่สามารถไปที่ Facebook Lint ได้ทุกครั้ง ฉันได้ลองใช้คำขอ ajax ไปยัง Facebook Lint (กับdevelopers.facebook.com/tools/debug/og/object?q= ... เป็น url) แต่การตอบสนองคือค่า q (ส่งผ่านเป็นพารามิเตอร์ไปยัง url ด้านบน) คือ ไม่อนุญาตโดย Access-Control-Allow-Origin
Giovanni Bitliner

3
หากคุณยังคงประสบปัญหาในการรีเฟรชให้ลองเพิ่มพารามิเตอร์สตริงการสืบค้นแบบสุ่มที่ท้าย URL ของคุณ
JD Smith

2
เพียงคลิกที่Fetch new scrape informationปุ่ม
IvanRF

2
ฉันดึงข้อมูลการขูดใหม่ ... เห็นว่าเป็นข้อมูลที่ถูกต้อง แต่ผู้แชร์แสดงข้อมูลเก่า มีอะไรให้เราทำอีกไหม?
Peege151

1
หากคุณมีปัญหากับรูปภาพที่แสดงในการแชร์ให้ลองเปลี่ยน URI ของรูปภาพ
totymedli

10

ใช้ api มี API บังคับให้ Facebook ขูดหน้าอีกครั้งหรือไม่?

$furl = 'https://graph.facebook.com';

$ch = curl_init();

curl_setopt( $ch, CURLOPT_URL, $furl );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POST, true );
$params = array(
    'id' => '<update_url>',
    'scrape' => true );
$data = http_build_query( $params );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );

curl_exec( $ch );
$httpCode = curl_getinfo( $ch, CURLINFO_HTTP_CODE );

10

Facebook ถือว่าแต่ละ url ไม่ซ้ำกันและแคชเพจตาม url นั้นดังนั้นหากคุณต้องการแชร์ url ล่าสุดวิธีแก้ปัญหาที่ง่ายที่สุดคือเพิ่มสตริงข้อความค้นหาที่มี url ที่แชร์ พูดง่ายๆก็แค่เติม? v = 1 ต่อท้าย url สามารถใช้หมายเลขใดก็ได้แทน 1

เคล็ดลับหมวก: Umair Jabbar


ฉันคิดว่าสิ่งนี้จะส่งผลต่อจำนวนลิงก์ที่เพจของคุณได้รับเนื่องจากลิงก์เหล่านี้จะถูกนับสำหรับแต่ละเวอร์ชันใช่ไหม
André Laszlo

3

ฉันคิดว่าลิงก์ทั้งสองนี้มีการอภิปรายอย่างกว้างขวางเกี่ยวกับปัญหาที่เกี่ยวข้องกับปัญหาของคุณ fb: ref เคลียร์เงินสดโทร

fbml.refreshRefUrl

แบบนี้

<TT> fbml.refreshRefUrl ( "http://www.mysite.com/someurl.php")

คุณสามารถศึกษาสิ่งที่เกี่ยวข้องได้จากที่นี่fb: ref . ฉันหวังว่ามันจะได้ผลสำหรับคุณ


3

หน้านี้อยู่ที่https://developers.facebook.com/tools/debug/และมีการเปลี่ยนแปลงเล็กน้อยเนื่องจากคำตอบอื่น ๆ

วาง URL ของคุณลงในนั้นแล้วกด " Debug " จากนั้นกดปุ่ม " ดึงข้อมูลการขูดใหม่ " ใต้ช่องข้อความ URL และคุณควรตั้งค่าทั้งหมด มันจะดึงเมตาแท็กใหม่ ๆ จากเพจของคุณ แต่พวกมันจะยังคงแคชอยู่ดังนั้นโปรดทราบว่าคุณจะต้องทำสิ่งนี้ทุกครั้งที่คุณเปลี่ยนแปลง นี่เป็นสิ่งที่สำคัญมากหากคุณกำลังเล่นกับเมตาแท็กเพื่อรับ URL ที่แชร์ของ FB เพื่อจัดรูปแบบตามที่คุณต้องการใน facebook


2

คำตอบนี้มีไว้สำหรับนักพัฒนา

การล้างแคชหมายความว่าการแชร์ใหม่ของหน้าเว็บนี้จะแสดงเนื้อหาใหม่ซึ่งมีให้ในแท็ก OG แต่เฉพาะในกรณีที่ URL ที่คุณกำลังดำเนินการมีการโต้ตอบน้อยกว่า 50 ครั้ง (ไลค์ + แชร์) นอกจากนี้ยังจะไม่ส่งผลกระทบต่อลิงก์เก่าไปยังหน้าเว็บนี้ซึ่งได้โพสต์ไว้บน Facebook แล้ว เฉพาะเมื่อแชร์ URL บน Facebook อีกครั้งวิธีที่ Facebook แสดงลิงก์จะได้รับการอัปเดต

คำตอบของ catandmouse นั้นถูกต้อง แต่คุณสามารถทำให้ Facebook ล้างแคช OG (OpenGraph) ได้โดยส่งคำขอโพสต์ไปที่ graph.facebook.com (ใช้ได้ทั้ง http และ https ในการเขียนคำตอบนี้) คุณไม่จำเป็นต้องมีโทเค็นการเข้าถึง

คำขอโพสต์ไปยัง graph.facebook.com อาจมีลักษณะดังนี้:

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: graph.facebook.com
Content-Length: 63
Accept-Encoding: gzip
User-Agent: Mojolicious (Perl)

id=<url_encoded_url>&scrape=true

ใน Perl คุณสามารถใช้รหัสต่อไปนี้ซึ่งใช้ไลบรารี Mojo :: UserAgent เพื่อส่งและรับคำร้องขอ HTTP:

sub _clear_og_cache_on_facebook {
    my $fburl     = "http://graph.facebook.com";
    my $ua        = Mojo::UserAgent->new;
    my $clearurl  = <the url you want Facebook to forget>;
    my $post_body = {id => $clearurl, scrape => 'true'};
    my $res       = $ua->post($fburl => form => $post_body)->res;
    my $code      = $res->code;
    unless ($code eq '200') {
        Log->warn("Clearing cached OG data for $clearurl failed with code $code.");
        }
    }
}

การส่งคำขอโพสต์นี้ผ่านเทอร์มินัลสามารถทำได้โดยใช้คำสั่งต่อไปนี้:

curl -F id="<URL>" -F scrape=true graph.facebook.com

1

ต่อท้าย a? v = random_string เข้ากับ url หากคุณกำลังใช้แนวคิดนี้กับการแชร์บน Facebook ตรวจสอบให้แน่ใจว่าพารามิเตอร์ og: url ในการตอบกลับตรงกับ URL ที่คุณแชร์ สิ่งนี้จะใช้ได้กับ google plus ด้วย

สำหรับ Facebook คุณสามารถบังคับให้รวบรวมข้อมูลซ้ำได้โดยส่งคำขอโพสต์ไปที่https://graph.facebook.com

{id: url,
scrape: true}

นี่คือสิ่งที่ฉันกำลังมองหา
Bee

ฉันไม่สามารถใช้สิ่งนี้เพื่อโพสต์ JSON ด้านบนในบุรุษไปรษณีย์ได้ แต่การโพสต์สตริงข้อความดิบทำให้เกิดการรีเฟรช:id=http://www.ridr.me&scrape=true
Philipp Sumi

1

ฉันเพิ่งโพสต์วิธีแก้ปัญหาง่ายๆที่ใช้เวลา 5 วินาทีที่นี่ในโพสต์ที่เกี่ยวข้องที่นี่ - ตัวแก้ไขข้อบกพร่องของ Facebook: ล้าง

คำตอบสั้น ๆ ของแคชไซต์ทั้งหมด ... เปลี่ยนลิงก์ถาวรของคุณบนไซต์ worpdress ในการตั้งค่าลิงก์ถาวรเป็นแบบกำหนดเอง ฉันเพิ่งเพิ่มขีดล่าง
/ _% postname% /
จากนั้น facebook จะคัดลอกทั้งหมดเป็น URL ใหม่โพสต์ใหม่


ฉันเรียบง่ายและเท่ห์ น่าเสียดายที่ทิ้งชื่อลิงก์ที่ไม่ต้องการ
Garavani

0

หากคุณใช้ wordpress กับปลั๊กอินแคชตรวจสอบให้แน่ใจว่าคุณได้ล้างแคชทั้งหมดของคุณ ตรวจสอบให้แน่ใจว่ารูปภาพที่คุณใช้มีขนาด facebook ที่แนะนำ: 1200 (w) x 630 (h) หรือ 600 x 315


0

หากคุณใช้ wordpress ที่มีการจัดการหรือปลั๊กอินการแคชคุณต้องล้างแคชของคุณก่อนที่เครื่องมือดีบักเกอร์ของ Facebook จะสามารถดึงข้อมูลใหม่ได้!

ฉันดึงผมออกมาหลายสัปดาห์แล้วโดยหาสาเหตุว่าทำไมการเปลี่ยนแปลงที่ฉันทำไม่ปรากฏในตัวดีบักของ Facebook เป็นเวลา 24 ชั่วโมง !!!! วิธีแก้ไขคือฉันต้องเข้าไปที่แผงควบคุม wordpress ของฉันคลิกไอคอนของ GoDaddy ที่ด้านบนแล้วคลิก "ล้างแคช" ฉันคิดว่าโฮสต์ WordPress ที่มีการจัดการหลายคนมีแคชเพื่อหาวิธีล้างและคุณจะเป็นสีทอง


การล้างแคชของ Wordpress จะไม่ช่วย อย่างน้อยสำหรับฉัน
Garavani
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.