Эпический рефакторинг МОРФ sci-fi mach:n
И без того самый быстрый в мире движок стал еще быстрее в 10 раз, практически реализована уникальная система генерации статики, еще больше развита мультисервисность и снижена зависимость от базы данных.
Статика
Из множества вариантов реализации кэширования у нас есть свой вариант.
Мы регенерируем статические файлы только после внесения изменений в объекты пользователем. Затем регенерируем списки объектов. Если никто изменений не вносит, то ничего и не происходит, клиент получает кэшированную версию запроса к базе, при этом сам интерфейс остается динамическим и кэшируется препроцессором.
API
В разработке мы умышленно ставим ограничения на размер файлов и придерживаемся принципа 1 сервис - 1 файл. На данном этапе исключение составляют только Виды, имеющие несколько зависимостей, адекватное решение этой задачи пока не придумано.
Но тем не менее программный интерфейс (API) реализован сегментировано и элементарно: просто используется параметр в запросе v=json на url с необходимым интерфейсом. Например чтобы получить объект, используется его псевдоним и id:
https://yuai.ru/morf-sci-fi-mach-n_681?v=json
result->content хранится и в базе и в статике кодированным, в целях безопасности, поэтому его необходимо раскодировать. Например на js это делается примерно так:
function decodeHTMLEntities(text) { let textArea = document.createElement('textarea'); textArea.innerHTML = text; return textArea.value; }
Дизайн
Пользовательский интерфейс является отражением философии и внутренней логики приложения. Имея серверную часть потрясающей производительности , вы не станете мириться с медленным фронтендом и чем больше оптимизируется код на сервере, тем большее влияние он оказывает на структуру.
Имея разработку с чистого листа, мы постепенно добавляем и оптимизируем элементы интерфейса, внимательно следя за производительностью. Современная техника дает возможности сверх-избыточных нагромождений фреймворков и прочих заготовок, но только не для нас и по прежнему нашим основным требованием остается сохранение базовой функциональности приложения с отключенным javascript и показатели 100 из 100 в лабораторной среде на базе PageSpeed Insights.