- Compiler Explorer ได้เปลี่ยนวิธีจัดเก็บมาตั้งแต่ปี 2012 เพื่อให้ลิงก์ที่แชร์อยู่รอดได้นาน แต่การ ปิดตัวของ goo.gl ทำให้การเก็บรักษาลิงก์เก่าแบบ
godbolt.org/g/abc123กลายเป็นเรื่องเร่งด่วน - ช่วงแรกเก็บสถานะทั้งหมดของคอมไพเลอร์ไว้ใน URL, ปี 2014 เพิ่ม บริการย่อ URL ของ Google และหลังจาก Stack Overflow แบน URL แบบย่อในปี 2016 ก็สร้างลิงก์อ้อมแบบ
godbolt.org/g/abc123 - ตั้งแต่ปี 2018 เมื่อข้อจำกัดความยาว URL กลายเป็นปัญหามากขึ้น จึงเปลี่ยนมาใช้วิธีของตนเอง โดยเก็บสถานะเป็น เอกสาร JSON บน S3 และใช้ DynamoDB จัดการการแมประหว่างแฮชสั้นกับพาธเต็ม
- เมื่อ Google ยุติลิงก์ goo.gl ใน เดือนสิงหาคม 2025 การตีความลิงก์เก่าที่อิงกับ goo.gl จะทำได้ยากขึ้น จึงกำลังรวบรวมลิงก์
gประมาณ 12,000 รายการที่พบจากเว็บสาธารณะและล็อก พร้อมปลายทางการรีไดเรกต์ไว้ในฐานข้อมูลของตนเอง - ผู้ใช้ที่มีลิงก์ Compiler Explorer เก่า หากเข้าชมลิงก์ตอนนี้ก็มีโอกาสถูกเพิ่มเข้าในรายการเก็บรักษา และความรู้ที่แชร์ซึ่งต้องคงอยู่ยาวนานจะปลอดภัยกว่าหาก เป็นเจ้าของโครงสร้างพื้นฐานหลักเอง
การเปลี่ยนแปลงวิธีเก็บลิงก์ของ Compiler Explorer
- ในปี 2012 สถานะทั้งหมดของ Compiler Explorer ถูก เก็บไว้ภายใน URL
- วิธีเข้ารหัสสถานะคอมไพเลอร์ทั้งหมดลงใน URL ทำให้ URL ยาวและจัดการยาก และในเดือนมีนาคม 2014 จึงเพิ่มการรองรับ URL แบบย่อของ goo.gl จาก Google
- ในตอนนั้นลิงก์สั้นอยู่ในรูป
goo.gl/abc123และเมื่อคลิกจะรีไดเรกต์ไปยัง URL เต็มของเว็บไซต์ Compiler Explorer จากนั้นจึงถอดรหัสสถานะที่อยู่ใน URL
ลิงก์อ้อมหลัง Stack Overflow แบน
- ในปี 2016 Stack Overflow แบน บริการย่อ URL ด้วยเหตุผลว่าสามารถซ่อนปลายทางจริงได้
- มาตรการนี้ส่งผลกระทบต่อลิงก์ของ Compiler Explorer ด้วย และในเวลานั้นยังไม่มีความตั้งใจจะจัดเก็บข้อมูลผู้ใช้เองโดยตรง
- วิธีแก้คือยังใช้ goo.gl ต่อไป แต่ให้ลิงก์แก่ผู้ใช้ในรูป
godbolt.org/g/abc123abc123คือ ID เฉพาะของ goo.gl- การเข้าถึง
/g/abc123จะรีไดเรกต์ไปยังgoo.gl/abc123 - จากนั้น goo.gl จะรีไดเรกต์อีกครั้งไปยัง URL เต็มของ godbolt.org ที่มีสถานะอยู่ภายใน
- ภายหลังใช้ Google API เพื่อหลีกเลี่ยง เชนการรีไดเรกต์ หลายขั้น
การเปลี่ยนไปใช้ที่จัดเก็บของตนเองในปี 2018
- ในปี 2018 ข้อจำกัดความยาว URL กลายเป็นปัญหายิ่งขึ้น และในเวลานั้นมีการบีบอัดข้อมูลใน URL อยู่แล้ว
- Compiler Explorer เปลี่ยนมาเป็นโครงสร้างที่จัดเก็บสถานะเองโดยตรง
- ยังตรวจสอบด้วยว่าแฮชของลิงก์สั้นมีคำไม่เหมาะสมปะปนอยู่หรือไม่
- หากพบคำไม่เหมาะสม จะจงใจใส่ข้อมูลเพิ่มเติมลงในเอกสารเพื่อให้ได้แฮชอื่น
- พฤติกรรมนี้นำไปสู่ bug #1297
ปัญหาการเก็บรักษาที่เกิดจากการปิดตัวของ goo.gl
- Compiler Explorer ยังรองรับลิงก์
godbolt.org/g/abc123อยู่ - Google เคยระบุว่าลิงก์เดิมจะยังคงรีไดเรกต์ไปยังปลายทางที่ตั้งใจไว้ แต่ goo.gl กลายเป็นแบบอ่านอย่างเดียวไปเมื่อหลายปีก่อน และมีกำหนดปิดถาวรใน เดือนสิงหาคม 2025
- หลังจากปิดตัวแล้ว จะไม่สามารถตีความลิงก์ที่อิงกับ goo.gl ได้อีก
- ลิงก์
goo.glจริง ๆ นั้นฝั่ง Compiler Explorer ไม่สามารถแก้ไขได้ แต่ลิงก์godbolt.org/g/abc123สามารถเก็บรักษาไว้ในฐานข้อมูลของตนเองได้
การรวบรวมลิงก์เดิมและฐานข้อมูลของตนเอง
- ในช่วงไม่กี่วันที่ผ่านมา กำลังรวบรวมลิงก์เดิมและ URL ปลายทางการรีไดเรกต์จากแหล่งสาธารณะหลายแห่ง
- จนถึงตอนนี้พบลิงก์ประมาณ 12,000 รายการ
- API ค้นหาเว็บของ Google
- API ของ GitHub
- เว็บล็อกของตนเอง
- ดัมพ์ข้อมูล Stack Overflow ของ archive.org
- รายการหน้าเว็บที่ Archive.org เก็บถาวรไว้
- ภายในระบบได้ทำ การเปลี่ยนแปลง ให้ใช้ฐานข้อมูลของตนเองก่อน goo.gl
- ยังเฝ้าติดตามลิงก์
gใหม่ที่ยังไม่มีในฐานข้อมูลด้วย - ในเครื่องมีฐานข้อมูล sqlite และฝั่งโปรดักชันใช้ Dynamo
สิ่งที่ผู้ใช้ช่วยได้
- หากคุณเก็บลิงก์
godbolt.org/g/abc123เก่าไว้ต่างหาก การเข้าไปเยี่ยมชมแต่ละลิงก์ตอนนี้จะช่วยได้ - เมื่อเข้าชมลิงก์ ลิงก์นั้นจะปรากฏในเว็บล็อก และภายหลังอาจถูกเพิ่มลงในฐานข้อมูล
- มิฉะนั้น หลังเดือนสิงหาคม 2025 ลิงก์ดังกล่าวอาจใช้งานไม่ได้
- กรณีนี้แสดงให้เห็นความเสี่ยงของการพึ่งพา บริการของบุคคลที่สาม สำหรับโครงสร้างพื้นฐานสำคัญ
- หากต้องการรักษาคำมั่นสัญญาเรื่อง “URL ที่คงอยู่ตลอดไป” ก็ต้องเป็นเจ้าของทั้งสแต็กด้วยตนเอง
ยังไม่มีความคิดเห็น