2009-07-16 74 views
4

我在谷歌App Engine上运行Django的(1.0.2),想知道以下Django caching modules的哪个(如果有的话)应该与固有实施Google's memcache工作:Django的缓存模块会在Google App Engine上工作吗?

Middlewear

  • django.middleware.cache.UpdateCacheMiddleware

  • django.middleware.common.CommonMiddleware

  • django.middleware.cache.FetchFromCacheMiddleware

装修

  • django.views.decorators.cache.cache_page

模板片段缓存

在模板:

{{ load cache }}{% cache 500 cache_name %}...cached...{% endcache %} 

底层API

  • django.core.cache

如果某些或所有这些模块应该工作,有没有作出任何必要的修改他们是否正常工作,在使用时应该注意哪些问题或缺陷?

我已经仔细阅读了文档,并花了一些时间搜索Google,但是我没有看到答案。我怀疑它可能是一个“交钥匙”解决方案,但是对于使用Django类没有至少有一个引用,认为别人没有问题就可以做到这一点。

谢谢。

回答

4

Running Django on Google App Engine表示“可以在Google App Engine上使用几乎整个Django堆栈,包括中间件。”此外,该页面有一个例子,其中包括你刚才提到的一个类,所以至少一个应该工作:

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware', 
... 

各种网站如this one有代码使用的AppEngine和Django的缓存代码,比如作为django.middleware.cache.UpdateCacheMiddleware。其他参考文献见this Google search,质量参差不齐。 ;)

我还没有真正使用过这个东西,所以我只能接受别人的话,但看起来好像有很多人已经做到了。

编辑: Django门票73987399与此相关。

8

不,应用引擎提供了一个自定义的memcached API。你需要做的事(可能已经有一个开源的实现,我不知道)是为这个API编写一个Django缓存后端,它们非常简单,你可以使用现有的memcached后端作为你的新基础:http://code.djangoproject.com/browser/django/trunk/django/core/cache/backends/memcached.pyhttp://code.google.com/appengine/docs/python/memcache/usingmemcache.html显示App Engine memcached API的外观。

+0

为了记录在案,我认为无论是给这个问题的答案是有价值的。目前还不清楚,当赏金结束时,Stackoverflow如何处理投票中的关系,并且我曾希望如果平局发生,它会分裂奖金。不幸的是,它似乎已经任意选择了一个答案,并将所有的奖励都颁发给了它。感谢您的回复,Lazypython,这很有帮助,我很感激。 – 2009-07-29 16:04:50

相关问题