В прошлый раз я рассказала про запекание шаблонов, которое позволяет снизить нагрузку за счёт запоминания постоянных частей страниц и заполнения только динамических.
Сказать по правде, оно довольно тяжело даётся... Понадобилось довольно много времени "за чертежами" (над блокнотом), чтобы выяснить, что в конструкции {{player.user.login}} постоянство нужно проверять не у игрока, пользователя и его логина, а у переходов "шаблон -> player", "player -> user" и запроса "user->template(login)". В конечном счёте постоянство будет опрошено у тех же объектов, но разница в логике довольно велика.
В связи с этим подошло время переписывать
парсер шаблонов, чем я сейчас и занимаюсь. Парсер превращает строчку "{{player.user.login}}" в команду языка программирования "$this->keyword(['player', 'user', 'login'])". Это, опять же, должно выполняться только раз, когда шаблон сохраняется (
предкомпиляция), иначе подобное превращение пришлось бы делать прямо во время генерации страницы, каждый раз заново. Сейчас предкомпилятор - довольно примитивный служебный сценарий, который хотя справляется со своей работой (его содержимое не менялось уже больше года), но не очень удобен для расширения кода. В общем, моя задача сейчас - разнести этот структурный код на классы и объекты. К счастью, это задача гораздо проще, чем с наскоку сделать запекание шаблонов, и после её решения с выпечкой тоже будет проще.
Ещё я сегодня узнала
из передачи "16 бит тому назад", что главным вкладом Джона Кармака в жанр 3Д-экшенов заключался не в изобретении методов генерации 3Д-графики, а именно в оптимизации вполне уже известных методов, чтобы игра могла идти на нормальных домашних компах со скоростью, позволяющей динамичную боёвку. Так что я заново воодушевилась, уверившись в важности оптимизации.
Что касается появляющейся формы, динамические элементы делать не так-то просто, во всяком случае сложнее, чем статичные. В форме редактирования экспедиций динамических элементов просто по макушку - тем летом у меня ушло на это около месяца... Так что здесь мне показалось достаточным не заморачиваться этим и просто перейти на другую страницу с готовой формой.