python - Django 是否缓存 POST 请求(及其参数)?
问题描述
我有一个 DRF API,它实现了允许GET
和POST
调用的视图:
@api_view([
'GET',
'POST',
])
@cache_page(timeout=60 * 10)
def my_view(request):
# do stuff
我注意到:
GET
请求按预期缓存。POST
请求根本不会被缓存。
问题:
这是故意的还是我做错了什么?
如果这按预期工作......我怎样才能让 Django 也缓存
POST
请求?
解决方案
从 Django 源代码中类的文档中:
有关缓存如何工作的更多详细信息: * 仅缓存状态代码为 200 的 GET 或 HEAD 请求。链接:https ://github.com/django/django/blob/master/django/middleware/cache.py
这种限制的原因可能是因为 GET 请求被认为是幂等的,而 POST 请求不是,因此缓存 POST 请求通常没有意义。这是一个很好地解释了这个概念的问题:什么是 HTTP 方法中的幂等性?
Django 是开源的,所以你总是可以扩展缓存机制来获得这种行为,但它可能会让你的 API 用户感到困惑,因为他们希望 POST 始终是一个新请求。
推荐阅读
- python - 在训练数据集中重复图像以用于 TensorFlow 对象检测模型
- r - 如何根据R中列向量的升序/降序对列表进行子集化
- jquery - FullCalendar - 避免滚动条
- mysql - 如果在spring数据jpa查询中为null返回空白
- c++ - 打印两个整数之间的偶数
- javascript - 根据从数据库中获取的值打开表单
- nginx - Odoo 13 网络资产失败
- unity3d - 如何绘制路径轨迹像下面的游戏参考统一
- microcontroller - 使用 UART 同步两个微控制器之间的串行通信的最佳方法是什么?
- php - 如何在codeigniter中限制同一用户多次登录另一个系统