我想开始使用 memcached 但我不知道如何开始。我应该/可以添加什么到缓存?(例如在简单的博客应用程序中)。最佳实践是什么?
问问题
93 次
1 回答
0
基础知识可以在 django缓存文档中找到。
如果您有一个非常基本的博客,所有页面都有些相同,您可以使用缓存中间件,它只是缓存所有内容。
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 缓存知识有点生疏,所以可能会有一些错误。其中大部分是使用他们文档中的数据完成的。希望这可以稍微澄清一下。
于 2013-10-17T19:41:32.857 回答