Допустим у нас есть генератор статического сайта, который превращает груду markdown'а в груду правильно связанного html и прочего rss. Мне хочется делать обновления к записям, которые будут например отображаться в rss и иметь дату модификации. Как это должно быть реализовано на стороне исходных документов? Можно кэшировать генератором историю изменения документов и сравнивать с компилируемой, но тогда если потеряется кэш, часть данных сайта потеряется. Можно создавать новые документы, которые каким-то образом обозначены как версии старого документа, но это выглядит как грабли для пользователя.
Для RSS и каталога это выглядит как удаление статьи и появление новой. Следовательно, если они строятся самым простым способом, по датам изменения исходников, и для постов используются канонические ссылки (без дат, генерируемые автоматически или вручную), всё заработает.
При использовании датированных ссылок можно при генерации поста добавлять по определённому шаблону в начало/конец исходника дату его изменения. Если её там нет — добавляем. Если есть — сравниваем, при совпадении не делаем ничего, при расхождении добавляем ещё одну. Потом, при сборке, либо копируем содержимое поста для каждой из старых дат, либо ставим редиректы на последнюю версию. Так старые ссылки </ГГГГ/ММ/ДД/имя> будут сохраняться. Можно совместить это с выводом дат создания и изменения в документ шаблонизатором.
Если же каждую изменённую версию требуется сохранить, то ничего делать не надо, это просто совершенно независимые посты с частично совпадающим содержанием.
@voker57 Тебе нужно хранить состояние, логично делать это в самом документе. Никаких костылей в добавлении одной строчки с датой я не вижу.
@voker57 В «сгенерированном HTML» не поковыряешься, его ещё не существует. Во многих системах уже есть формат указания метаданных (категорий/тегов/…) для поста, его и надо расширить.
В RSS для нового пользователя и должен быть один экземпляр. Те, кто скачивал старые версии, будут в клиенте видеть больше копий.
Изменения описываются ручками. Или ты хочешь щедро выводить diff пользователю? Веди уж в git бложик тогда, действительно.
@voker57 Так ты реши, одна у тебя сущность, которая становится только лучше, или несколько независимых. В одном случае промежуточные версии никого не должны интересовать, в другом — это полноценные независимые посты.