Снимки и кеш
Эта глава описывает снимок входов, с которым идёт сборка, и перечень зависимостей, по которому продукт строит кеш.
Снимок входов
Перед сборкой продукт проверяет права и передаёт снимок входов
(simai.composition.inputs). Каждое значение в нём приходит в оболочке:
вид, само значение, его отпечаток и происхождение (область сайта, владелец,
имя, ревизия).
Framework сверяет вид, схему, область, происхождение и пересчитанный отпечаток. Отпечаток удостоверяет только то, что значение не изменилось по дороге; что источник подлинный и доступ разрешён, удостоверяет продукт.
Правила снимка:
- снимок фиксируется на всю сборку: одна страница не смешает старый шаблон с новым содержимым;
- один вход читается один раз; повторные обращения используют то же значение;
- отказ доступа — ошибка (
access_denied), а не отсутствующее значение. Значение по умолчанию не скрывает отказ или повреждение источника.
Область сайта (scope) Framework получает от доверенного контекста
продукта, а не из Recipe.
Перечень зависимостей и кеш
Результат сборки — не только Document, но и перечень зависимостей
(simai.composition.dependencies), то есть список зависимостей для кеша. В
нём только то, что действительно участвовало в результате:
- прочитанные шаблоны и фрагменты с ревизией и отпечатком;
- использованные входы и способ их получения: передан или взят по умолчанию;
- отпечаток готового Document;
- отпечатки исполнения: контракта, реестра типов и рендерера.
При краткой шапке результат зависит от шаблона статьи, фрагмента
header.compact, настройки headerMode и текста статьи. Фрагмент
header.expanded в перечень не входит — его изменение страницу не
затрагивает. Повторное обращение к одному входу внутри сборки использует уже
прочитанное значение.
Фрагмент перечня для краткой шапки:
{
"references": [
{"kind": "template", "ref": "article", "revision": "r1"},
{"kind": "fragment", "ref": "header.compact", "revision": "r1"}
],
"inputs": [
{"name": "headerMode", "resolution": "provided"},
{"name": "body", "resolution": "provided"}
]
}
Полный перечень с отпечатками — в ожидаемых результатах проверяемого JSON.
Если вход отсутствовал и взят по умолчанию, перечень всё равно называет отсутствующий источник: так продукт узнает, когда этот источник появится.
Ключ кеша продукта учитывает отпечаток Document и отпечатки исполнения. Framework сообщает зависимости; решение о хранении, сроке жизни и активации кеша принимает продукт.