คำตอบนี้มีไว้สำหรับนักพัฒนา
การล้างแคชหมายความว่าการแชร์ใหม่ของหน้าเว็บนี้จะแสดงเนื้อหาใหม่ซึ่งมีให้ในแท็ก 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