django 缓存键命名
django cache key naming
我想使用 Django 缓存存储一些项目 API。命名密钥时是否有可遵循的最佳实践。我知道有些人只是将用户名作为密钥。但是我将在不同的视图中缓存各种项目,并且在每个地方都使用相同的密钥是不可行的。我在想可能会给一个带有用户名+ 'some view specific' 的密钥,这样密钥就可以是唯一的。
大家还有什么生成密钥的好的建议吗?
密钥的生成取决于您要实现的目标。
- 用户尝试访问的内容是否仅供该用户使用?
- 用户尝试访问的内容是否对所有用户通用?
例如
假设您正在尝试访问 url:
http://yourserver/endpoint/?filter1=value1&filter2=value2
在上述情况下,您可以使用查询参数 filter1=value1&filter2=value2
创建缓存键(通过生成 md5
哈希)。
考虑到前面的两个选项,如果视图应该 return 一些特定于用户的数据,那么您还可以附加 user id
为用户创建唯一键。
另一个示例可能是这样的 url,其中有人试图访问来自 source 1
:
的所有文章
http://yourserver/source/1/articles/?filter1=value1&filter2=value2
在这种情况下,将 cache key
附加到 source id
可能也很有用(因此这会在生成键时使用视图的上下文数据)。
我想使用 Django 缓存存储一些项目 API。命名密钥时是否有可遵循的最佳实践。我知道有些人只是将用户名作为密钥。但是我将在不同的视图中缓存各种项目,并且在每个地方都使用相同的密钥是不可行的。我在想可能会给一个带有用户名+ 'some view specific' 的密钥,这样密钥就可以是唯一的。
大家还有什么生成密钥的好的建议吗?
密钥的生成取决于您要实现的目标。
- 用户尝试访问的内容是否仅供该用户使用?
- 用户尝试访问的内容是否对所有用户通用?
例如
假设您正在尝试访问 url:
http://yourserver/endpoint/?filter1=value1&filter2=value2
在上述情况下,您可以使用查询参数 filter1=value1&filter2=value2
创建缓存键(通过生成 md5
哈希)。
考虑到前面的两个选项,如果视图应该 return 一些特定于用户的数据,那么您还可以附加 user id
为用户创建唯一键。
另一个示例可能是这样的 url,其中有人试图访问来自 source 1
:
http://yourserver/source/1/articles/?filter1=value1&filter2=value2
在这种情况下,将 cache key
附加到 source id
可能也很有用(因此这会在生成键时使用视图的上下文数据)。