django - Django:缓存 wrt url 并反映更改
问题描述
在 Django 中,我有一个 url,它根据动态数据进行一些计算。
因此,如果我缓存 url,那么如果动态数据有任何更改,它会返回更新的结果。
例如:喜欢购买。
用户添加他想要的项目列表。
我有一个页面 localhost/user/items/
将显示他添加的所有项目列表,并带有一个链接localhost/user/items/specs
以显示他添加的所有项目的规格。
显示localhost/user/items/
页面需要更少的时间。
但是localhost/user/items/specs
需要很多时间。
如何缓存localhost/user/items/specs
并反映任何更改
解决方案
经过大量研究源代码后,我发现如果数据未更新,如何显示缓存页面,否则显示修改后的数据视图
from django.middleware.cache import CacheMiddleware
@login_required
someview(request, slug=None)
###### data_updated
# Check the conditions data modified is updated or not
data_updated = True/False
######
cachemiddleware = CacheMiddleware(cache_timeout=60*15)
if data_updated:
#######
# RUN all the code for view
# response = ..........
#######
# this is required because if the url is already cached it will be false
request._cache_update_cache = True
return cachemiddleware.process_response(request, response)
else:
result = cachemiddleware.process_request(request)
if result is not None:
return result
else:
#######
# RUN all the code for view
# response = ..........
#######
return cachemiddleware.process_response(request, response)
推荐阅读
- python - 将值与 pandas DataFrame 中的前一行进行比较并用黄色和绿色着色
- firebase - Imagepicker'XFile'不是类型转换和Firebase存储图像上传错误中'File'类型的子类型
- python - 熊猫如何将函数应用于 groupby().first()
- zpl - ZEBRA ZPL 标签格式与文本一起打印报价单
- tensorflow - 在 tensorflow 2.3 中执行量化感知训练 (QAT) 时无法访问正则化损失值
- sql - 将多行转换为列
- r - 拆分矩阵列,无需中间转换为矩阵
- python - 将 tkinter 条目链接到彼此的输入
- heroku - 是否可以在 Heroku 上运行不和谐音乐机器人?
- ansible - 使用 Ansible 安装 Elastic Search 插件