Изменения

HMVC

2 байта добавлено, 13:11, 21 мая 2016
м
Нет описания правки
Делим страницу на блоки, каждый блок обрабатывается одним контроллером. При этом контроллеры образуются в «иерархию» — каждый блок может вызывать другие и подставлять внутрь себя их вывод. Каждый вызов контроллера описывается именем контроллера и параметрами, в которых, аналогично URL-параметрам, допускаются только сериализованные данные, а не объекты.
Для корректной инвалидации кэша используем теги. Для реализации тегов в кэше, который сам по себе их не поддерживает, вместе с каждым ключом кэша будем сохранять «номера версий» всех связанных с ним тегов, а номер версии самого тега будем хранить в отдельной легковесной БД типа redis (либо в самом кэше, если он позволяет пометить ключ как невытесняемый). При чтении ключа из кэша будем сверять номера версий всех его тегов с новыми номерами версий тегов, и если в прочтённом ключе фигурирует более старая версия тега — будем вести себя так, как будто прочтённый ключ в кэше отсутствует. Таким образом, сброс ключей по тегу превращается в простой икремент инкремент его номера версии. Также в ключе «информации о теге», кроме номера версии, мы будем сохранять время его модификации, чтобы потом легко вычислять время последней модификации страницы на основании одних только тегов кэша.
Далее запуск каждого контроллера делится на два метода: