2013-11-11 3 views
2

У меня есть шаблон страницы результатов поиска, что в целом выглядит следующим образом:Django шаблон рендеринг на стороне клиента

{% for result in results %} 
    // single result template 
{% endfor %} 

Как я понимаю, когда запросы пользователей для этой страницы из браузера, шаблон визуализирует на стороне сервера, а затем html передает пользователю. Мне кажется, что можно уменьшить трафик, отправив только JSON со значениями и получив окончательный html на стороне клиента. Прибыль связана не с отправкой одного и того же html-ядра для каждого шаблона.

Это имеет смысл? Есть ли общее решение для такой оптимизации? Большое спасибо.

ответ

3

Да, есть, хотя и не как часть запаса Django. Рамки, такие как Ember.js и AngularJs делают это в Javacript. Оба они представляют собой полную модель контроллера View View, которая работает на стороне клиента. В конечном итоге Serverside можно просто свести к интерфейсу REST, передав json клиентам.

Это крайний пример, и я считаю, что Ember.js можно легко интегрировать с небольшими разделами вашего сайта, которые могут быть тем, что вы ищете для использования с django.

Если django использует кэширование промежуточного программного обеспечения, то он не должен быть слишком неэффективным для большинства сайтов, так как кеш будет обновляться только при изменении данных, хотя генерация динамических результатов поиска является хорошим примером того, когда это неверно.

Система шаблонов django очень эффективна. Как и в большинстве веб-фреймворков, в большинстве случаев при выполнении поиска на сервере большая часть времени, затрачиваемого на обслуживание запроса, будет использоваться при запросе базы данных, особенно если используется обычный текстовый поиск. Поэтому оптимизация последнего этапа обслуживания запроса в виде рендеринга шаблона, вероятно, не была бы целесообразной оптимизацией для большинства случаев.

Сказав, что многие веб-сайты выполняют рендеринг клиентов, и в настоящее время это активная область разработки фреймворка.

Смежные вопросы