Шаблоны Django кэшируются в браузере? - PullRequest
0 голосов
/ 03 июля 2018

Скажем, у нас есть запрос в Django, который отображает my_template.html и контекст {foo: bar}

 return render(request, "my_template.html", {foo: bar})

Теперь в зависимости от активности пользователя foo и изменения бара. Допустим, пользователь сделал свой первый запрос. Django вернет шаблон и соответствующий {foo: bar} в зависимости от активности пользователя. Допустим, пользователь сделал второй запрос с другой активностью.

Будет ли Django отправлять my_template.html с сервера в браузер или только измененное context будет отправлено в браузер? Кэшируется ли шаблон в браузере?

Дело 1:

Если шаблон кэшируется в браузере, если развернут код с некоторыми изменениями, отражается ли он в браузере клиента? Работает ли это таким образом, что хэш md5 обоих шаблонов сравнивается, если они не синхронизированы, то шаблон загружается с сервера Django?

1020 * Вариант 2 *

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

Я прочитал, что на узле и в англоязычном виде пакеты javascript кэшируются в клиентском браузере, и на сервер поступают только вызовы с данными (context {foo: bar}), поэтому использование полосы пропускания лучше и загрузка быстрее, это правда.

Ответы [ 3 ]

0 голосов
/ 12 июля 2018

По моему опыту, шаблон не будет кэшироваться, или, по крайней мере, он не будет кэширован каким-либо образом, который мешает получить обновление. После сохранения обновления в шаблоне происходит процесс автоматического развертывания, который может занять несколько секунд (и вы можете наблюдать в командной строке, если вы использовали команду 'runserver'). После завершения автоматического развертывания шаблон будет обновлен после обновления браузера.

0 голосов
/ 16 июля 2018

Так же, как в примере, который вы упомянули, который использует Node и Angular. Вы также можете использовать Angular с Django, а с некоторыми методами, такими как Progressive Web Apps, которые можно легко добавить в Angular, вы можете кэшировать шаблоны на стороне клиента. Таким образом, сервер Django будет отвечать только за отправку данных через API REST, а кэшированное приложение Angular / PWA будет отображать данные.

0 голосов
/ 03 июля 2018

Django - это фреймворк на стороне сервера. Шаблоны полностью отображаются на сервере перед отправкой клиенту. В результате браузер вообще ничего не знает о шаблонах; только полностью визуализированный HTML.

Но нет смысла сравнивать Django с Angular таким образом. Вы не можете использовать Angular самостоятельно без какой-либо бэкэнд-фреймворка, которым вполне может быть Django - оба хорошо работают вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...