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 客户端