标签:定义 分离 log 数据库 策略 超时 参数 https 请求
缓存位置的配置(在settings中配置,BACKEND不同,缓存的位置不同):
文件缓存
CACHES = {
'default':{
'BACKEND':'django.core.cache.backends.filebased.Filebased.FileBasedCache', # 指定缓存使用的引擎
'LOCATION':'D:\文件名\cache(文件夹名)', # 指定缓存的路径
'TIMEOUT':300 # 缓存超时时间(默认为300秒,None表示永不过期)
'OPTIONS':{
'MAX_ENTRIES':300, # 最大缓存记录的数量(默认300)
'CULL_FREQUENCY':3 # 缓存到达最大个数之后,剔除缓存 个数的比例,即:1/CULL_FREQUENCY(默认3)
}
}
}
内存缓存(将缓存内容保存至内存区域中)
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', # 指定缓存使用的引擎
'LOCATION': 'unique-snowflake', # 写在内存中的变量的唯一值
'TIMEOUT':300, # 缓存超时时间(默认为300秒,None表示永不过期)
'OPTIONS':{
'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
}
}
}
数据库缓存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache', # 指定缓存使用的引擎
'LOCATION': 'cache_table', # 数据库表
'OPTIONS':{
'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
}
}
}
注意:创建缓存的数据库表使用的语句:
python manage.py createcachetable
1.配置settings文件,把cache配置进去
2.单页面缓存:在视图函数上加一个装饰器
from django.views.decorations.cache import cache_page
@cache_page(5) # 5代表缓存时间
3.局部缓存
{% load cache %}
{% cache 5 'test' %} <!--第一个参数表示缓存时间,第二个参数是key(取缓存的时候需要根据key取值)-->
当前时间:{{ time }}
{% endcache %}
4.全站缓存
在settings中配置两个中间件:注意顺序
'django.middleware.cache.UpdateCacheMiddleware', # 第一个
.........
'django.middleware.cache.FetchFromCacheMiddleware' # 最后
# 配置一个超时时间
CACHE_MIDDLEWARE_SECOEDS = 5
5.高级用法
前后端分离
from django.core.cache import cache
cache.set('test_data',{'name':'lucas','age':18},5)
cache.get('test_data')
浏览器的同源策略:拒绝不是当前域返回的数据
同域:ip地址和端口号都相同才是同一个域
如何解决跨域问题:
自定义中间件:
from django.utils.deprecation import MiddlewareMixin
class MyCorsMiddle(MiddlewareMixin):
def process_response(self,request,response):
if request.method == 'OPTIONS':
# 允许它,非简单请求
response['Access-Control-Allow-Headers'] = 'Content-Type'
# 允许所有header访问
# response['Access-Control-Allow-Headers'] = '*'
# 简单请求
response['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8000'
# 所有的域都允许访问
# response['Access-Control-Allow-Origin'] = '*'
return response
写完在settings中间件中配置一下
'app01.MyMiddle.MyCorsMiddle' # 最好放在第一个
别人写的cors-headres(在我的博客Rest Framework中涉及到)
补充:
自己封装response:
根据get_paginated_response的想法自己来封装response
from rest_framework.response import Response
class MyResponse():
def __init__(self):
self.code = 100
self.msg = None
def get_response(self):
return Response(self.__dict__)
class Test(APIView):
def get(self,request,*args,**kwargs)
response = MyResponse()
response.data = {'name':'lucas','age':'18'}
response.code = 100
response.msg = '查询成功'
return response.get_response()
图片防盗链:
? 可以通过refer控制
? nginx处理
如何提高网站的并发量:
? QPS:Queries Per Second意思是‘每秒查询率‘,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准
? TPS:是TransactionsPerSecond的缩写,也就是事务数/秒,它是软件测试结果的测量单位,一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程,客户机在发送请求时计时,收到服务器响应结束计时,以此来计算使用的时间和完成的事务个数
提高方法:
前端:
后端:
标签:定义 分离 log 数据库 策略 超时 参数 https 请求
原文地址:https://www.cnblogs.com/yanminggang/p/11154579.html