Мементо

May 19, 2017 07:00


В процессе дизайна персонального архиватора обнаружил что существует достаточно официальный (RFC 7089) протокол для архивации веб-ресурсов под названием Memento. Авторы протокола пошли оригинальным путём и просто расширили стандартную процедуру "content negotiation" ещё одним измерением - временем!

В схеме Memento клиент может сделать HEAD-запрос к ресурсу (на сервере, поддерживающем эту схему) с указанием заголовка "Accept-Datetime: {date}" и сервер отвечает на такой запрос стандартным 200 OK с указанием места где живёт "TimeGate" - сервер архивации, и выглядит это как "Link: {uri}, rel=timegate". После этого можно обратиться к таймгейт-серверу и он выдаст 302 Found туда где уже и выдадут запрошенную архивную копию.

На основе этого протокола придумали решение моей проблемы протухающих ссылок - Robust Links. Тэг ссылки просто расширяется дополнительными атрибутами data-versiondate и data-versionurl, так что ссылки выглядят примерно так:

http://thekeepers.org/ // rendered as http://thekeepers.org/
Такие декорированные ссылки небольшим скриптом можно превратить в мини-менюшки выбора конкретной сохранённой версии документа по ссылке. К сожалению, обычному бложеку на LJ/DW такая техника не подходит потому что сторонний скрипт так легко не подцепить. Поэтому Memento-сервисы обычно поддерживают запросы вида GET /{date}/{resource uri}, однако стандартизация сюда ещё не добралась и каждый сервис лепит что-то своё.

Увы, серьёзных сервисов поддерживающих Memento, не так уж и много: Wayback Machine, Archive Today, Perma.cc. Wayback Machine примечательна своим возрастом - она архивирует интернет с 2001 года (я там даже нашёл свой старый хомяк из прошлого тысячелетия!). Archive Today поражает качеством архивирования - видимо они загружают страницы в headless browser и сохраняют получившееся состояние. Однако совершенно непонятно кому принадлежит этот сервис и соответственно неясно сколько он ещё протянет. Perma.cc пилится Гарвардским университетом, так что стоит предположить что он переживёт все подобные сервисы, что и является его главным преимуществом.

Чувствую, в своём хабе-архивариусе надо будет запилить поддержку Memento. Незачем велосипеды изобретать. Было бы совсем круто сделать этот протокол распределённым, чтобы каждый такой сервачок мог спросить у соседних сервачков "а у вас такого URLя не найдётся?", но как только начинаешь думать о децентрализации - сразу всплывает такое количество проблем, что всё желание думать дальше и пропадает. Поэтому наш девиз - каждый сам за себя!

archiving, nexvs, internet

Previous post Next post
Up