Здравствуйте, creasysee, Вы писали:
C>Здравствуйте, Sinclair, Вы писали:
S>>Вообще-то именно по этой причине генераторы, основанные на шаблонной разметке, вытеснили императивные генераторы. PHP, JSP, ASP[.NET] и так далее позволяют гораздо лучше разделять разметку и логику.
S>>Поэтому вопрос номер 1: вам точно нужен ISAPI?
C>Да. Очень критична скорость обработки и ответа сервера при взаимодействии с существующими библиотеками на VC++. Нужно именно на C++ и именно ISAPI Ext.
Ну, ребята, я бы на вашем месте всё же обратился бы к профайлеру.
Немного теории:
1. Быстрее всего грузятся страницы из локального кэша. Поэтому самый охрененный performance boost дает хидер Content-Expiration
2. К сожалению, очень редко удается заранее спрогнозировать изменение динамического контента. Поэтому следующим по скорости отдачи идет 304 Not Modified (в предположении, что есть недорогой способ определить, обновился ли результат запроса)
3. Хитрые люди еще и складывают ответы в кэш сервера. Тогда те, кто их уже получал, получат 304, а те, кто пришел в первый раз, получат готовый контент из кэша.
4. И только если ничего из этого не получилось, нужно заняться собственно "вычислением" ответа.
В вычислении ответа важна скорострельность в подготовке фрагментов.
По моему опыту, при подготовке респонса дороже всего стоит обращение к СУБД, дальше идет стоимость протаскивания респонса через сокет. Собственно, скорость прокладки между первым и вторым большой роли не играет.
Если ты уверен, что у тебя именно такой редкий случай, то быстрее всего работает вот такой код:
*pCtxt << "<html><head><title>Превед</title></head><body>Данное 1 = " << var1 << "</body></html>";
Примечание: я сам ISAPI Extension никогда не писал, опираюсь на общие соображения.
Мап тебе никакой не нужен. Если шаблоны статические, то надо просто сделать примитивный генератор кода на основе парсера .csp-файлов. Повторы роли не играют.
Можно пойти по стандартному пути: используешь <% %> для встраиваемого кода, <%= somexpression%> превращается в *pCtxt << somexpression;
Рекомендую поискать стандартные решения.
... << RSDN@Home 1.2.0 alpha rev. 677>>