您的位置:首页 > 编程语言 > Python开发

python 学习笔记十九 django深入学习四 cookie,session

2016-08-24 22:06 721 查看
缓存

一个动态网站的基本权衡点就是,它是动态的。 每次用户请求一个页面Web服务器将进行所有涵盖数据库查询模版渲染业务逻辑的请求,用来创建浏览者需要的页面。当程序访问量大时,耗时必然会更加明显,这就是需要缓存的地方,缓存一些东西是为了保存那些需要很多计算资源的结果,这样的话就不必在下次重复消耗计算资源。

Django自带了一个健壮的缓存系统来让你保存动态页面这样避免对于每次请求都重新计算。方便起见,Django提供了不同级别的缓存粒度:你可以缓存特定视图的输出、你可以仅仅缓存那些很难生产出来的部分、或者你可以缓存你的整个网站

Django支持 开发调试,内存,mysql,Redis、Memecache、文件的方式做缓存,并且可以设置超时时间。

设置缓存(基于文件)

settings

CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',   # 引擎 
'LOCATION': os.path.join(BASE_DIR, 'cache'),                # cache文件的存放路径
'TIMEOUT': 600,                                 # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)  
'OPTIONS': { 
'MAX_ENTRIES': 1000                             # 最大缓存个数(默认300)
}
}
}


urls

配置如下:
from django.conf.urls import url
from django.contrib import admin
from app01 import views #导入app的views函数
urlpatterns = [
url(r'^admin/', admin.site.urls),
#设置当用户访问ip:端口/time时候使用这个函数
url(r'cache/',views.cache_page),
]


views

from django.views.decorators.cache import cache_page
from django.shortcuts import render,HttpResponse
#这里设置的是 60秒 * 15 ,15分钟之后
@cache_page(60 * 15)
def cache_page(request):
current = str(time.time())
return HttpResponse(current)


cookie 和 session

Cookie 保存于本地 ,session 保存于服务器;同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,

所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。

区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗

考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

工作流程:

import json

def ajax_data(request):
ret = {'status':True,'error':''}
try:
print request.POST
except Exception,e:
ret['status'] = False
ret['error'] = str(e)
#在上面如果他出错我就把他ret[status] = False
return HttpResponse(json.dumps(ret))


View Code
更多内容见:
http://www.cnblogs.com/wupeiqi/articles/5246483.html http://www.cnblogs.com/luotianshuai/p/5278175.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: