3

我正在做的是避免请求命中 Django 并直接从 nginx 提供缓存数据。
相关问题:Django staticgenerator vs CACHE_BACKEND

似乎有两种选择:https:
//github.com/torchbox/django-nginx-memcache
https://github.com/mrj0/staticgenerator - 这个似乎更容易使用

在尝试了 django-nginx-memcache 之后,我发现了一些缺点:

  • 没有从 django 提供缓存内容的回退(可以修复)。
  • nginx 必须为 url 的 md5 sum 生成重新编译(我认为这无法修复)。
    • 编辑:查看其他解决方案(例如:http ://soyrex.com/articles/django-nginx-memcached/ )后,我发现似乎没有必要使用 md5 cache_keys。也许这应该是一个选择。
  • 能够定义应该缓存的 url 模式列表会很好。到目前为止,只有装饰器可用(可以修复)。
  • 在我看来,代码应该更多地模仿标准 django 缓存后端,使用UpdateCacheMiddlewareFetchFromCacheMiddleware。这将使存在标准 django 缓存解决方案的地方更容易实现 nginx 缓存。它还可以解决问题 #1(可以修复)。
  • 模块的奇怪命名。虽然项目名为django-nginx-memcache,但包名为Django-Memcache-for-Nginx和应用程序nginx_memcache以包含在 django installed_apps 中(可以修复)。

哪个更快?
你会使用哪一个,为什么?
我应该解决我在django-nginx-memcache上遇到的问题,还是静态生成器更好?

4

3 回答 3

1

这似乎回答了我所有的问题,并提供了比django-nginx-memcache更优雅的解决方案,即修补 django 缓存系统: http: //www.willmcgugan.com/blog/tech/2009/3/1/fast -caching-with-django-and-nginx/

来自页面评论的基准:

静态内容几乎比使用 nginx 从 memcache 提供服务快 4 倍。

请求速率:6243.8 req/s (0.2 ms/req) (静态 html)

请求速率:2285.5 req/s (0.4 ms/req)(memcache 中的相同 html)

我想我会选择staticgenerator但请随时发表您的想法。

编辑:

我意识到我正在并行运行两个网络服务器,如果我使用staticgenerator ,我需要一种方法来同步缓存的数据。我想我可以分叉它并让它通过网络在两台服务器上写入文件。对此有什么想法吗?

于 2012-09-06T07:57:37.643 回答
0

您似乎想缓存生成的页面。您是否尝试过 Varnish ( https://www.varnish-cache.org/ )。

以前我正在研究 Django 的缓存,我发现了这篇关于使用 Varnish 缓存来缓存生成的页面的文章。 http://ghughes.com/blog/2011/11/11/using-varnish-with-django-for-high-performance-caching/

可能它会为你工作。

于 2012-09-06T06:05:06.013 回答
0

本着保持简单的精神,在 Nginx 的代理模块中使用缓存指令怎么样?

按照https://serverfault.com/a/68160/46143http://www.rfxn.com/nginx-caching-proxy/

于 2012-09-06T09:23:00.380 回答