我们的网站有时会有大约600名经过认证的用户试图在5分钟的时间内注册一个事件。我们有一个带有1个CPU和1 1GB的VPS。在这些时刻,网站速度变慢,并给出502错误。
出于这个原因,我在FileBasedCache
中使用了每个站点的缓存。这非常好用,压力测试也很好用。
但是,当人们登录时,他们会被重定向到他们的个人资料。代码如下:
class UserRedirectView(LoginRequiredMixin, RedirectView):
permanent = False
def get_redirect_url(self):
return reverse("users:detail", kwargs={"membership_number": self.request.user.membership_number})
用户被重定向到具有其membership_number url
class UserDetailView(LoginRequiredMixin, DetailView):
model = User
slug_field = "membership_number"
slug_url_kwarg = "membership_number"
一些用户报告说,他们在登录后被重定向到其他人的个人资料。
这是怎么回事?如何防止网站的用户特定部分被缓存?例如,用户还可以看到特定于他们所在组的事件列表。换句话说,每个用户应该看到不同的列表。
有什么想法吗?最佳实践?
发布于 2021-11-05 01:07:26
您应该能够改变cookie上的缓存,以便登录的用户(假设基于cookie的身份验证)获得另一个缓存键。
from django.views.decorators.vary import vary_on_cookie
@vary_on_cookie
def my_view(request):
pass
https://docs.djangoproject.com/en/dev/topics/cache/#controlling-cache-using-other-headers和https://docs.djangoproject.com/en/dev/topics/cache/#using-vary-headers
https://stackoverflow.com/questions/69850170
复制相似问题