先说一下我的现状吧,我刚在自己的博客网站加的 django-redis 作为缓存,当然,这个跟自带的的缓存的使用无差别,所以不讨论 redis 的问题。然后我把缓存都用在的视图和 url 中,如下 2 中方式:
@cache_page(60 * 60 * 24)
def useragent_view(request):
return render(request, 'tool/useragent.html')
然后如果是类视图的话,我是把缓存的方式放到 url 中,如下:
url(r'^tag/(?P<slug>[\w-]+)/$', cache_page(60 * 60 * 2)(TagView.as_view()), name='tag'),
本身我这种用法是没错的,缓存是的确生成了,但是,我发现有很大的问题,因为我的所有的页面都有一个导航栏,而在导航上面是有登录和登出按钮的,而我设置的缓存都是缓存整个页面,所以导致的问题就是用户明明是登录状态,但是有的页面显示登录了,有的页面显示没有登录(没有显示登录的页面无法新登录),反正问题就出在了导航栏的用户登录上面。
其实我能理解这种问题,毕竟我缓存的是整个页面,所以导航栏也是其中的一部分,因此会造成显示上面的问题,我想到的解决办法是吧缓存的方式改成在模板中去缓存,或者把要读取数据库信息的内容缓存在自己创建的标签函数中,请问还有别的方式吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.