zoukankan      html  css  js  c++  java
  • django之缓存

    网址:https://blog.csdn.net/weixin_39726347/article/details/88035356

       https://www.jianshu.com/p/e0cc03f385ec

       https://www.cnblogs.com/chichung/p/9993317.html

        https://www.cnblogs.com/zhangxiaomeng1991/p/8257747.html

    一.缓存全站配置

    1.在settings中的MIDDLEWARE中添加django.middleware.cache.UpdateCacheMiddleware’和’django.middleware.cache.FetchFromCacheMiddleware’

    (注意: update中间件必须放在列表的开始位置,而fectch中间件,必须放在最后。 这是Django使用中间件的规则,它们是有顺序关系的。),如下:

    MIDDLEWARE = [
        'django.middleware.cache.UpdateCacheMiddleware',   #缓存全站之开始缓存 注意: update中间件必须放在列表的开始位置,而fectch中间件,必须放在最后。 这是Django使用中间件的规则,它们是有顺序关系的。
        'shucaiyidate.localuser.middleware.simple_middleware',  #自定义中间键获取IP内容
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'django.middleware.cache.FetchFromCacheMiddleware',#缓存全站之结束缓存 注意: update中间件必须放在列表的开始位置,而fectch中间件,必须放在最后。 这是Django使用中间件的规则,它们是有顺序关系的。
    ]

    2.配置缓存设置,在settings中的配置如下:

    CACHE_MIDDLEWARE_SECONDS = 300            #每个page需要被缓存多少秒.,超时时间设定为300秒
    CACHE_MIDDLEWARE_ALIAS = "quanzhanhuancun"               #用于存储的缓存的别名
    CACHE_MIDDLEWARE_SECONDS = 300 #每个page需要被缓存多少秒.,超时时间设定为300秒
    CACHE_MIDDLEWARE_KEY_PREFIX= #密钥前缀


    二、基于本地(服务器)内存的缓存,缓存保存在服务器的内存中,在settings中的配置如下:
    #基于本地(服务器)内存的缓存,缓存保存在服务器的内存中
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
            'LOCATION': 'unique-snowflake',
            'TIMEOUT': 600,
            'OPTIONS': {
                'MAX_ENTRIES': 2000
            }
        }
    }

    三、基于文件的缓存,在settings中的配置如下:

    #将数据缓存在指定的目录中
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
            # 'LOCATION': '/var/tmp/django_cache',    #linux路径
            'LOCATION': 'E:djangocache',   #windows路径
            'TIMEOUT': 600,
            'OPTIONS': {
                'MAX_ENTRIES': 1000
            }
        }
    }

     四、利用数据库来缓存:

      1.先用 

        python manage.py createcachetable my_cache_table  
      命令创建一个表名为"my_cache_table"的表来缓存数据
     2.在settings中的配置如下:
      
    #利用数据库来缓存
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'my_cache_table',   #利用 python manage.py createcachetable my_cache_table 创建的“my_cache_table”表
            'TIMEOUT': 600,
            'OPTIONS': {
                'MAX_ENTRIES': 2000
            }
        }
    }

    五、用Memcache来缓存:

      Memcache简介 :https://www.cnblogs.com/tdalcn/p/6961627.html

      1.安装依赖:

        Ubuntu/Debian系统命令:

          sudo apt-get install libevent ibevent-dev      

        Redhat/Fedora/Centos系统命令:

           yum install libevent libevent-devel 

        安装telnet-server:  yum install telnet-server

                 yum list telnet*       #列出telnet相关的安装包

                 yum install telnet.*   #安装telnet客户端

        安装xinetdyum -y install xinetd

      2.安装memcached:

        Ubuntu/Debian系统命令:

          sudo apt-get install memcached

        Redhat/Fedora/Centos系统命令:

           yum install memcached

        cat /etc/sysconfig/memcached  #查看配置文件,如下

        

    PORT="11211"
    USER="memcached"
    MAXCONN="1024"
    CACHESIZE="64"
    OPTIONS=""

        systemctl start memcached  #启动memcached服务

        systemctl enable memcached  #开机启动memcached服务

        telnet 127.0.0.1 11211   :连接成功,表示启动

        netstat -tlunp   :可以看到11211端口,即表示启动

        或 ps -ef | grep memcached   可以看到服务启动的进程

          使用 kill -9 进程id   ,可以杀死进程

        

      3.python中pip 安装“

           pip install python-memcached      #安装python-memcached

           pip install pylibmc  #安装pylibmc

      4.在settings中的配置:

        

    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',  #缓存后台使用的引擎#根据你安装的Python依赖库不同,将CACHES的BACKEND设置为django.core.cache.backends.memcached.MemcachedCache或者django.core.cache.backends.memcached.PyLibMCCache
            'LOCATION': '127.0.0.1:11211',   #设置LOCATION为你的Memecached守护进程所在的主机IP和进程端口,格式为ip:port的字符串。或者unix:path的形式,在Unix操作系统中。
            'TIMEOUT': 600,  # 缓存超时时间(默认300秒,None表示永不过期,0表示立即过期)
            'OPTIONS': {
                'MAX_ENTRIES': 2000,   #最大缓存记录的数量(默认300)
                'CULL_FREQUENCY': 3,  # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
            }
        }
    }

       5.linux 系统查看memcached使用情况:http://blog.sina.com.cn/s/blog_7d31bbee010193il.html

        说明memcached重要关注数据:https://www.cnblogs.com/smallrookie/p/5776565.html

       6. memcached官网文档:https://www.runoob.com/memcached/memcached-stats.html

      7. 设置开机启动memcached :  网址:https://www.cnblogs.com/iceman-/p/7875285.html

          在/etc/rc.d/rc.local 文件中追加:

            

          /usr/local/memcached/bin/memcached  -u root -d -m 2048 -l 192.168.137.99 -p 11211 -P /tmp/memcached.pid

            也可不指定IP,默认是本机,如 (用户最好是 apache或 deamon)

          /usr/local/memcached/bin/memcached  -u deamon -d -m 2048 -p 11211 -P /tmp/memcached.pid

            此处追加

              /usr/bin/memcached -u root -d -m 2048 -p 11211 -P /tmp/memcached.pid

     


  • 相关阅读:
    Park Visit
    1894: 985的方格难题
    985的数字难题
    Highways
    最短路
    SQL内容补充
    8.前端资源优化
    7.CSRF攻击和文件上传漏洞攻击
    6.XSS攻击方式及防御措施
    5.避免重复提交表单
  • 原文地址:https://www.cnblogs.com/jingzaixin/p/13403333.html
Copyright © 2011-2022 走看看