如果它们真的永远不会改变,那么请随意将它们放入您的 settings.py 文件中,就像声明一个普通的 Python 字典一样。
但是,如果您希望您的信息可以通过正常的 Django 方法进行修改,那么请使用数据库进行持久存储,然后充分利用 Django's cache framework。
像往常一样将数据保存到数据库中,然后在第一次访问时缓存它们:
from django.core.cache import cache
def some_view_that_accesses_date(request):
my_data = cache.get('some_key')
if my_data is None:
my_data = MyObject.objects.all()
cache.set('some_key', my_data)
... snip ... normal view code
确保永远不要将None 保存在缓存中,因为:
我们建议不要存储文字
缓存中的值None,因为你
将无法区分
您存储的None 值和缓存
未命中由返回值表示
None.
确保您终止了object deletion 或change 上的缓存:
from django.core.cache import cache
from django.db.models.signals import post_save
from myapp.models import MyModel
def kill_object_cache(sender, **kwargs):
cache.delete('some_key')
post_save.connect(kill_object_cache, sender=MyModel)
post_delete.connect(kill_object_cache, sender=MyModel)
我的一个应用中有类似的东西,而且效果很好。显然,如果您随后使用数据库后端,您将不会看到任何性能改进,但与直接使用 memcached 相比,这是一种更像 Django(Djangonic?)的方法。
显然,可能值得在某处定义缓存键 some_key,而不是在您的代码中到处乱扔它,上面的示例只是为了易于理解,而不一定是完整的缓存实现。