跳转到主要内容

Django Nginx Memcached集成。

项目描述

Djanginxed

Django Nginx Memcached集成。

提供了一个视图装饰器,在Memcached中缓存内容,以便通过Nginx轻松检索。缓存键由完整请求路径的MD5值(包括GET参数)组成。

安装

  1. 安装或添加djanginxed到您的Python路径。

  2. 根据Django的缓存框架文档中的描述正确设置Memcached。

  3. 可选地,在您的Django设置文件中设置CACHE_MIDDLEWARE_KEY_PREFIX设置 - 如果缓存是使用同一Django安装跨多个站点共享的,请将其设置为站点的名称或其他对Django实例唯一的字符串,以防止键冲突

    CACHE_MIDDLEWARE_KEY_PREFIX = "site1"
  4. 使用set_hash模块安装Nginx。此模块是必需的,以便在Nginx内部计算MD5缓存键

    set_md5 $memcached_key $request_uri;
  5. 配置Nginx以直接从Memcached检索页面,即

    location / {
        default_type       text/html;
        set_md5 $memcached_key $request_uri;
        memcached_pass     127.0.0.1:11211;
        error_page         404 405 500 @django;
    }
    
    location @django {
        fastcgi_pass    127.0.0.1:7000;
        fastcgi_param   GATEWAY_INTERFACE   CGI/1.1;
        fastcgi_param   DOCUMENT_URI        $document_uri;
        fastcgi_param   DOCUMENT_ROOT       $document_root;
        fastcgi_param   REQUEST_METHOD      $request_method;
        fastcgi_param   REQUEST_URI         $request_uri;
        fastcgi_param   REMOTE_ADDR         $remote_addr;
        fastcgi_param   REMOTE_PORT         $remote_port;
        fastcgi_param   QUERY_STRING        $query_string;
        fastcgi_param   CONTENT_TYPE        $content_type;
        fastcgi_param   CONTENT_LENGTH      $content_length;
        fastcgi_param   SERVER_ADDR         $server_addr;
        fastcgi_param   SERVER_PROTOCOL     $server_protocol;
        fastcgi_param   SERVER_PORT         $server_port;
        fastcgi_param   SERVER_NAME         $server_name;
        fastcgi_param   SERVER_SOFTWARE     nginx/$nginx_version;
        fastcgi_param   PATH_INFO           $fastcgi_script_name;
    }
  6. 可选地,当使用缓存键前缀时,将其包含在Nginx $memcached_key生成中

    set_md5 $memcached_key site1$request_uri;

用法

装饰器

djanginxed.decorators.cache.cache_page

《cache_page》装饰器用于在Memcached中缓存视图响应内容,适用于Nginx的查找。《cache_page》接受一个参数:缓存超时时间,单位为秒。

示例

from djanginxed.decorators.cache import cache_page

@cache_page(60 * 15)
def my_view(request):
    ...

这将把视图的响应字符串在Memcached中缓存15分钟(60 * 15),缓存键由完整的请求路径生成。

注意:生成的HttpResponse对象的content值存储在Memcached中,而不是实际的HttpResponse对象。

《cache_page》还可以接受一个可选的关键字参数,即《key_prefix》,其工作方式与中间件的《CACHE_MIDDLEWARE_KEY_PREFIX》设置相同。它可以这样使用

@cache_page(60 * 15, key_prefix="site1")
def my_view(request):
    ...

作者

  • Shaun Sephton

变更日志

0.0.5

  1. 增加了使用自定义缓存键生成器的功能。

0.0.4

  1. 测试和润色。

0.0.1

  1. 初始发布。

项目详情


下载文件

下载适合您平台的项目文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

djanginxed-0.0.5.tar.gz (5.2 kB 查看散列)

上传时间 源代码

构建分发

djanginxed-0.0.5-py2.6.egg (7.9 kB 查看散列)

上传时间 源代码

支持者