Задать вопрос

Шаблонизатор на основе node.js с хранилищем объектов в MySQL и постобработкой на webkit?

Здравствуйте.

Хочу попробовать реализовать шаблонизатор на основе базы данных. Практически, переизобрести Веб. Идея такова.

1. При запросе страницы /index, node.js отдает только head, из которого исполняется init.js (пользовательский скрипт на стороне клиента).
2. init.js запрашивает GET /index?init.
3. node.js проверяет наличие страницы в таблице page.
4. node.js запрашивает записи из таблицы node, где `node`.`page` FK `page`.`uri` = index, а `node`.`parent` = 'body'.
5. node.js что-то достает из базы данных и отдает объекты первого уровня вложения в в таком виде: [header: [class: ['header', 'object`]], main: [class: ['main'], role: 'main', id: 'main']]. Объект кэшируется в ОЗУ и в следующий раз просто возвращается объект node.js.
6. Запрос кешируется на стороне клиента и в следующий раз init.js запросит /index?init уже с заголовком If-Modified-Since.
7. init.js строит DOM из полученных объектов и запрашивает следующий уровень для каждого из. Например, GET /index?header.
8. node.js отдает каждый из блоков, как в пункте 5.

В чем смысл:
1. Сделать HTML более ООП.
2. Кэшировать страницу по элементам, стили по классам (запросы кэшируются, какие-то данные можно кэшировать в indexedDB).
3. Передавать блоки параллельно по одному постоянному подключению, используя HTTP/2.
4. Вместо интервальной проверки изменений в блоках на стороне клиента, посылать новые блоки из сервера используя HTTP/2.
5. Возможность просматривать страницу без подключения к Интернету.
И многое другое.

Вопросы:
1. Как лучше хранить DOM. Как лучше хранить шаблон-выборку из DOM элементов (планирую в indexedDB на стороне клиента)?
2. Будут ли поисковые системы индексировать такие страницы, загружаемые посредством AJAX?
3. Как хранить innerText, ведь посередине него может быть вставлен блок?
4. Дублировать ли блоки для каждой из страниц или сохранять только оригинальны?
5. Насколько для такой задачи подходит mySQL? Можно ли заменить на indexedDB с последующим кэшированием в объекты на стороне сервера?
6. Сможет ли node.js обрабатывать по скажем 100 000 запросов блоков от 1000 клиентов в секунду? Какая конфигурация сервера нужна?
7. Встает вопрос, как же хранить динамические значения. А что если, например, к node.js подключить webkit и полученный из базы блок сразу же вставлять в body. К блокам, в которые нужно вставить динамическое значение добавлять атрибут data-post-action. И отлавливать событие создание DOM блока с определенными data-post-action?
  • Вопрос задан
  • 765 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Хотите переизобрести веб?
1. Избавьтесь от DOM, замените его компонентами, как в Delphi и в .NET. Вообще, HTML и CSS это очень плохие технологии для приложений, которые отбросили нас на два десятилетия.
2. Избавьтесь от HTTP, перейдите к RPC, это удобно для клиент-серверных приложений с установлением соединения, где взаимодействие через: вызов удаленных процедур и трансляцию событий.
3. Избавьтесь от реляционных СУБД и храните объекты без декомпозиции, строя вокруг них индексы, для быстрого поиска в коллекциях.

И да поможет Вам Аллах!
Ответ написан
@vGrabko99
html, css, js, php, golang, mysql
Я думаю не надо городить аж такой извращённый велосипед. Плюс быстрее отдать с диска чем по вашей схеме.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы