![]() |
1
26
使用一个定制的中间件,你可以得到一个Django缓存实例,保证每个请求都被清除。
要使用中间件,请在settings.py中注册它,例如:
然后可以按如下方式使用缓存:
修改memoize修饰符以使用请求缓存应该很容易。查看Python Decorator库,以获得memoize Decorator的一个好示例: |
![]() |
2
3
我想出了一个将东西直接缓存到请求对象的方法(而不是使用标准缓存,它将绑定到memcached、文件、数据库等)
所以,基本上我只是将缓存的值(在本例中是category对象)存储在请求字典中的一个新键“c\u category”下。或者更准确地说,因为我们不能只在请求对象上创建一个键,所以我将该键添加到请求对象的一个方法-get\u host()。 乔治。 |
![]() |
3
3
|
![]() |
4
3
编辑: https://pypi.org/project/django-request-cache/
我发现了一个简单得多的解决方案,并且有点脸红,因为我没有意识到这从一开始就应该是多么容易。
有了这个,你可以用
如果你需要进入
**初始答案:**
编辑2016-06-15:
有了这个,你可以用
如果你需要进入
|
![]() |
5
2
这可能也可以通过本地存储实现。 我不知道这种方法的任何缺点,请在评论中随意添加它们。
|
![]() |
6
1
您可以随时手动进行缓存。
|
![]() |
7
1
Answer 由@href\给出的很好。 以防万一你想要一些短一点的东西,也有可能达到目的:
这种方法利用 lru cache
这不是使缓存失效的最佳方法,因为有时它会丢失最近的数据:
另外,作为一种奖励,您可以在请求/响应周期之外使用它,例如芹菜任务或管理命令作业。 |
![]() |
Patrick Bond · 如何将模型中的函数结果添加到列表中? 4 月前 |
![]() |
bur · 每次从模板调用方法都会查询数据库吗? 5 月前 |
|
Stefan · 在子目录中设置Django 5 月前 |
![]() |
vale383 · 如何在Django端点中查找user_id 5 月前 |
![]() |
Kovy Jacob · Django在动态URL段中添加斜线 5 月前 |
![]() |
user987 · 如何在Django中访问提交的表单请求数据 5 月前 |
![]() |
user24242514 · 将嵌套查询字符串请求转换为字典 6 月前 |