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

    django中的缓存
      -Django中的缓存方式:缓存的位置
        -开发调试阶段:没有缓存
        -缓存到内存中
        -缓存到数据库
        -缓存到文件
        -缓存到redis
      -缓存位置的配置(在setting中配置,BACKEND不同,缓存的位置不同):

    CACHES = {
    'default': {
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 指定缓存使用的引擎
    'LOCATION': 'D:xxxcache', # 指定缓存的路径
    'TIMEOUT': 300, # 缓存超时时间(默认为300秒,None表示永不过期)
    'OPTIONS': {
    'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300)
    'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)}}}


      -缓存粒度
        -全站缓存
        -单页面缓存
        -局部缓存
      -缓存使用:
        -1 配置setting文件,把cache配置进去
        -2 单页面缓存:在视图函数上加一个装饰器
          from django.views.decorators.cache import cache_page
          @cache_page(5) 5 代表缓存时间
        -3 局部缓存
          {% load cache %}
          {% cache 5 'test'%} 第一个参数表示缓存时间,第二个参数是key值(取缓存的时候,需要根据key值取)
          当前时间:{{ time }}
          {% endcache %}

        -4 全站缓存
          -在setting中配置两个中间件:注意顺序
          'django.middleware.cache.UpdateCacheMiddleware',(最前面)
          。。。。
          'django.middleware.cache.FetchFromCacheMiddleware'(最后面)
        -5 高级用法
          -前后端分离项目
            -设置值跟取值:
              cache.set('test_data',{'name':'lqz','age':18},5)
              cache.get('test_data')


    跨域问题
      -浏览器的:同源策略,浏览器拒绝不是当前域域返回的数据
      -ip地址和端口号都相同才是同一个域


    如何解决
      -CORS:跨域资源共享
      -简单请求:发一次请求
      -非简单请求:非简单请求是发送了两次请求,第一次是预检请求(OPTIONS请求),当预检通过,允许我发请求,再发送真实的请求
      -解决跨域问题:(写好这个中间件配置一下)
        class MyCorsMiddle(MiddlewareMixin):
        def process_response(self, request, response):
          if request.method == 'OPTIONS':
          # 允许它
            response['Access-Control-Allow-Headers'] = 'Content-Type'
            # obj['Access-Control-Allow-Headers']='*'

            # obj['Access-Control-Allow-Origin']='http://127.0.0.1:8000'
            response['Access-Control-Allow-Origin'] = '*'
            return response

    redis的安装和简单使用
      -内存数据库
        -Redis-x64-3.2.100---》类似mysql
        -redis-desktop-manager-0.9.3.817----》类似navcate
      -安装完后
        -redis-server 服务端
        -redis-cli 客户端

  • 相关阅读:
    SpringBoot HATEOAS用法简介
    犀函
    dubbo 相关面试题 有用(转)
    想使用消息队列,先考虑下这些问题!
    appium在Mac上环境搭建
    3. SOFAJRaft源码分析— 是如何进行选举的?
    Redis相关知识
    替代微信ipad协议(转)
    c#面试题(1)(转)
    例题6-5 Boxes in a line uVa12657
  • 原文地址:https://www.cnblogs.com/xuxingping/p/11153664.html
Copyright © 2011-2022 走看看