Я создаю сайт на базе web.py, postgres и redis. В некоторых представлениях моего приложения есть некоторая пользовательская информация. Например, если пользователь вошел в систему, ссылки на верхней панели будут отличаться от представления пользователя, не вошедшего в систему, или чего-то вроде «welcome $ username». Я могу реализовать это, отображая каждую страницу в ответ на каждый запрос. За исключением информации, указанной пользователем, другие части некоторых представлений точно такие же. Итак, я хочу кэшировать обработанную страницу. Я придумал какой-то подход к реализации, но я не знаю, что использовать, и, поскольку я как бы сам изучаю веб-разработку, я хочу знать, как профессиональные веб-разработчики справляются с этой проблемой.
Вот мои подходы:
- сохраните некоторые данные в файлах cookie и напишите фрагмент сценария javascript для управления HTML DOM после того, как страницы поступят в браузеры пользователя. таким образом, в некотором представлении моего приложения, все пользователи получают одну и ту же страницу, но данные, хранящиеся в файлах cookie, отличаются, тогда страницы, отображаемые с использованием javascript, отличаются
- рендеринг и кеширование каждой версии некоторых страниц для каждого пользователя, но я думаю, что это не очень хорошая идея ....
- отображать и кэшировать части страниц и создавать страницы при поступлении запроса. Я использую Templetor web.py для визуализации страниц. Есть базовый общесайтовый шаблон, который теперь работает как обертка. Если я использую этот подход к построению, вместо использования базового шаблона мне, возможно, придется визуализировать и объединять различные части страницы. Затем кешируйте соответствующие фрагменты для каждого пользователя.
Что я должен делать? Есть ли лучшие решения? Извините за мои ужасные навыки письма на английском :( Надеюсь, он сможет выразить то, что я хочу попросить. Любая помощь будет оценена и благодарим заранее! Спасибо!: D
РЕДАКТИРОВАТЬ: код, содержащий пользовательскую информацию, выглядит следующим образом
<nav>
<div class="wrapper">
<div class="primary">
<ul class="nav">
<li><span>Home</span></li>
<li><span>About</span></li>
<li><span>Contact</span></li>
</ul>
</div>
<div class="secondary">
$if session.logged_in:
<span>Welcome, $session.username</span>
<a href="/new">new post</a>
<a href="/logout">logout</a>
$else:
<a href="/register">register</a>
<a href="/login">login</a>
</div>
</div>
</nav>
Сейчас я использую сеанс, а это значит, что я не могу просто кэшировать одну версию для каждого пользователя. Как это реализует stackoverflow.com? Я вижу, что информация на верхней панели отличается, когда я не вошел в систему, и уверен, что знаю, что мнение каждого пользователя отличается ...