Tôi là Jake Marsh. Người đọc nhiều người đang đọc blog này bây giờ không phải là con người. Họ là agent: Claude, ChatGPT, Perplexity và bạn bè, lấy trang vì một người đã hỏi họ một câu hỏi. Tuần này tôi dành một buổi tối để làm cho Deallocated Objects trở nên dễ đọc cho họ (và cho công cụ tìm kiếm trong lúc ở đó). Blog là một trang web tĩnh được phục vụ bởi nginx, vì vậy mọi thứ ở đây là hoặc là một tệp được tạo ra lúc xây dựng hoặc một vài dòng cấu hình nginx. Không cần framework. HTML là một loại nhiễu lạc lẫm cho một agent phải đào qua. Mỗi bài viết giờ cũng tồn tại dưới dạng markdown thuần túy. Thêm .md vào bất kỳ URL bài viết nào: Mỗi tệp bắt đầu bằng một chút YAML frontmatter (tiêu đề, URL canonical, tác giả, ngày tháng, mô tả ngắn), sau đó là bài viết. Các bài viết cũ được viết bằng markdown từ đầu, vì vậy bản dựng chỉ cần dọn dẹp những thứ đó và chỉnh hướng hình ảnh của chúng đến các bản sao được lưu trữ tự động. Mẹo hay hơn là đàm phán nội dung. Nếu một khách hàng yêu cầu markdown trong Accept header của nó, nó sẽ nhận được markdown từ URL bình thường, không cần .md. Trong nginx đó là một bản đồ cộng với một dòng cho mỗi vị trí: Hai chi tiết quan trọng ở đây. Mỗi phản hồi đều gửi Vary: Accept, vì vậy một bộ nhớ đệm ở giữa không bao giờ sẽ gửi HTML cho một agent hoặc markdown cho một trình duyệt. Và các phản hồi .md gửi một Link: <...>; rel="canonical" header chỉ vào trang HTML, cộng thêm X-Robots-Tag: noindex, vì vậy Google không coi chúng là các bản sao trùng lặp của mỗi bài viết.
Nguồn chính
- THẢO LUẬNingvenews.ycombinator.com