我正在 web.py、postgres 和 redis 之上建立一个网站。在我的应用程序的某些视图中,有一些特定于用户的信息。例如,如果用户登录,顶部栏上的链接将不同于非登录用户的视图或“欢迎 $username”之类的内容。我可以通过渲染每个页面来响应每个请求来实现它。除了用户特定的信息,一些视图的其他部分完全相同。所以我想缓存渲染的页面。我想出了一些实现方法,但我不知道该使用哪个,因为我有点自学Web开发,我想知道专业的Web开发人员如何处理这个问题。
这是我的方法:
- 在页面到达用户浏览器后,将一些数据保存在 cookie 中并编写一段 javascript 脚本来操作 HTML DOM。这样,在我的应用程序的某些视图中,所有用户都获得完全相同的页面,但存储在 cookie 中的数据不同,然后使用 javascript 呈现的页面不同
- 为每个用户渲染和缓存某些页面的每个版本,但我认为这不是一个好主意....
- 渲染和缓存部分页面并在请求进入时构建页面。我正在使用 web.py 的 Templetor 来渲染页面。现在有一个基本的站点范围模板可以用作包装器。如果我使用这种构造方法,而不是使用基本模板,我可能必须渲染和连接页面的不同部分。然后为每个用户缓存适当的片段。
我应该怎么办?有更好的解决方案吗?对不起我糟糕的英语写作技巧:(希望它能表达我想问的问题。任何帮助将不胜感激并提前感谢!谢谢!: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 如何实现这一点?当我未登录时,我看到顶部栏中的信息有所不同,并且确定我知道每个用户的视图都不同......