- Compiler Explorer đã thay đổi cách lưu trữ từ năm 2012 để các liên kết chia sẻ có thể tồn tại lâu dài, nhưng việc goo.gl ngừng hoạt động khiến nhu cầu bảo toàn các liên kết
godbolt.org/g/abc123cũ trở nên cấp bách - Ban đầu, toàn bộ trạng thái trình biên dịch được chứa trong URL; đến năm 2014 thì tích hợp dịch vụ rút gọn URL của Google; và sau khi Stack Overflow cấm URL rút gọn vào năm 2016, dịch vụ này đã tạo liên kết vòng
godbolt.org/g/abc123 - Từ năm 2018, khi giới hạn độ dài URL trở thành vấn đề lớn hơn, hệ thống chuyển sang cách riêng: lưu trạng thái dưới dạng tài liệu JSON trên S3 và dùng DynamoDB để quản lý ánh xạ giữa mã băm ngắn và đường dẫn đầy đủ
- Khi Google chấm dứt các liên kết goo.gl vào tháng 8 năm 2025, việc phân giải các liên kết cũ dựa trên goo.gl sẽ trở nên khó khăn, nên dự án đang thu thập khoảng 12.000 liên kết
gcùng đích chuyển hướng của chúng từ web công khai và nhật ký - Nếu người dùng hiện truy cập các liên kết Compiler Explorer cũ mà họ đang giữ, các liên kết đó có thể được đưa vào danh sách bảo tồn; và với tri thức chia sẻ cần tồn tại lâu dài, việc tự sở hữu hạ tầng cốt lõi sẽ an toàn hơn
Sự thay đổi trong cách lưu liên kết của Compiler Explorer
- Năm 2012, Compiler Explorer lưu toàn bộ trạng thái ngay trong URL
- Cách mã hóa toàn bộ trạng thái trình biên dịch vào URL khiến liên kết quá dài và khó xử lý, nên vào tháng 3 năm 2014 đã bổ sung hỗ trợ URL rút gọn goo.gl của Google
- Khi đó, liên kết ngắn có dạng
goo.gl/abc123; khi được nhấp vào, nó sẽ chuyển hướng đến URL đầy đủ của trang Compiler Explorer rồi giải mã trạng thái nằm trong URL
Liên kết vòng sau lệnh cấm của Stack Overflow
- Năm 2016, Stack Overflow cấm dịch vụ rút gọn liên kết vì chúng có thể che giấu đích đến thực sự
- Quy định này cũng ảnh hưởng đến các liên kết Compiler Explorer, và vào thời điểm đó dự án chưa có ý định tự lưu trữ dữ liệu người dùng
- Giải pháp vòng là tiếp tục dùng goo.gl nhưng cung cấp cho người dùng liên kết dạng
godbolt.org/g/abc123abc123là ID riêng của goo.gl- Truy cập
/g/abc123sẽ chuyển hướng tớigoo.gl/abc123 - Sau đó goo.gl lại chuyển hướng tới URL đầy đủ của godbolt.org chứa trạng thái
- Về sau, dự án dùng Google API để tránh chuỗi chuyển hướng nhiều tầng này
Chuyển sang kho lưu trữ riêng vào năm 2018
- Đến năm 2018, giới hạn độ dài URL trở thành vấn đề lớn hơn nữa, và dữ liệu trong URL khi đó đã được nén sẵn
- Compiler Explorer chuyển sang cấu trúc tự lưu trạng thái
- Hệ thống cũng kiểm tra xem mã băm của liên kết ngắn có chứa từ ngữ khó chịu hay không
- Nếu xuất hiện từ ngữ khó chịu, hệ thống sẽ cố ý thêm thông tin vào tài liệu để tạo ra mã băm khác
- Cơ chế này đã dẫn tới bug #1297
Vấn đề bảo tồn do goo.gl ngừng hoạt động
- Compiler Explorer hiện vẫn hỗ trợ các liên kết
godbolt.org/g/abc123 - Google cho biết các liên kết hiện có sẽ tiếp tục chuyển hướng đến đích dự kiến, nhưng goo.gl đã bị chuyển sang chế độ chỉ đọc từ vài năm trước và sẽ ngừng hoạt động hoàn toàn vào tháng 8 năm 2025
- Sau thời điểm đó, các liên kết dựa trên goo.gl sẽ không còn có thể được phân giải nữa
- Bản thân các liên kết
goo.glthì Compiler Explorer không thể tự xử lý, nhưng các liên kếtgodbolt.org/g/abc123có thể được bảo tồn trong cơ sở dữ liệu riêng
Thu thập liên kết cũ và cơ sở dữ liệu riêng
- Trong vài ngày qua, dự án đã thu thập các liên kết cũ cùng URL đích chuyển hướng của chúng từ nhiều nguồn công khai
- Tính đến hiện tại đã tìm được khoảng 12.000 liên kết
- API tìm kiếm web của Google
- API của GitHub
- Nhật ký web nội bộ
- Bản dump dữ liệu Stack Overflow trên archive.org
- Danh sách các trang web được Archive.org lưu trữ
- Về mặt nội bộ, hệ thống đã thay đổi để ưu tiên cơ sở dữ liệu riêng thay vì goo.gl
- Dự án cũng đang theo dõi các liên kết
gmới chưa có trong cơ sở dữ liệu - Ở máy cục bộ dùng cơ sở dữ liệu sqlite, còn môi trường production dùng Dynamo
Người dùng có thể giúp gì
- Nếu bạn đang lưu riêng các liên kết
godbolt.org/g/abc123cũ, việc truy cập từng liên kết ngay bây giờ sẽ rất hữu ích - Khi truy cập liên kết, nó sẽ được ghi vào nhật ký web và sau đó có thể được thêm vào cơ sở dữ liệu
- Nếu không, sau tháng 8 năm 2025 các liên kết đó có thể sẽ không còn hoạt động
- Trường hợp này cho thấy rủi ro khi phụ thuộc vào dịch vụ bên thứ ba cho hạ tầng quan trọng
- Để giữ lời hứa về một “URL tồn tại mãi mãi”, cần phải tự sở hữu toàn bộ stack
Chưa có bình luận nào.