我想开始使用memcached,但我不知道如何开始。应该/可以添加到缓存中的内容是什么? (例如在简单的博客应用程序中)。什么是最佳实践?
答案 0 :(得分:0)
可以在django cache docs中找到基础知识。
如果你有一个非常基本的博客,所有页面都有点相同,你可以使用缓存中间件,它只是缓存一切。
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
)
这将缓存整个网站。然而,如果在某处有动态元素,这有时会有点太多缓存。
如果您的默认视图对所有用户都相同,则只需缓存整个视图。
from django.views.decorators.cache import cache_page
@cache_page(60 * 15)
def my_view(request):
...
这将在该视图的缓存中创建一个条目15分钟,具体取决于用户会话/语言。
但有时候这种情况过于宽泛,例如因为页面更新速度明显加快,或页面上存在高度动态的元素。
如果是这种情况,你必须更低一些,并手动维护你的缓存。
你基本上有两个选项,模板片段缓存或使用低级api的对象缓存。
例如,您可以缓存博客条目的模板片段。
{% load cache %}
{% cache 1600 blog_entry blog.id %}
.. blog_entry ..
{% endcache %}
但是,性能在很大程度上取决于与博客条目链接的数据量。
或者您可以缓存模型的特定条目。
from django.core.cache import cache
def blog_entry(request, id):
entry = cache.get('blog_entry'+str(id))
if not entry:
blog = Blog.objects.get(pk=id)
cache.set('blog_entry'+str(id), blog.entry, 15*60)
entry = blog.entry
... Render page with entry ...
我的django缓存知识有点生疏,所以可能会有一些错误。其中大部分内容来自他们的文档数据。希望这有点澄清。