session、cookie浅见
万事开头难,刚开始不一定能写好博文,不,应该是一定写的不好,但我定会用心。
以前只知道session是存在服务器,cookie是存在客户端,至于它们工作的原理就不了解了。为了巩固自己记忆,小小的总结了下。
一. 首先session,cookie是什么。
session是用户登录网站后存储在服务器的信息,而cookie就是验证用户、获取session中存储信息的凭证。
每当我们登陆网站成功后,服务器都会生成一个session用来记录当前登陆用户的信息,同时网站会要求我们的浏览器对应的存储一个cookie(一般是由服务器生成的PHPSESSID)。浏览器每次发送请求都要将cookie传给服务器用于验证用户是否处于登陆状态。
二. session_start()
当程序运行到 session_start()的时候,服务器就生成一个用于存储session信息的文件,同时会生成一个唯一的sessionId。sessionId(即PHPSESSID)则以cookie的方式保存在客户端。
三. session的存储方式。
session默认是以文件的方式存储(php.ini文件中有一行是:session.save_handler = files)。
文件存储有两个弊端,〈1〉读取session比较慢,用户量少的话还行,但用户量大的话就会导致大量的输入输出的冗余,这样服务器可能就撑不住了〈2〉多台服务器之间session的共享比较复杂(看过别人用NFS方式实现,不过我自己倒没有尝试过)。
数据库存储不存在共享的问题,但是频繁的读写也是很消耗资源的。
那有没有更好的方法,当然有了,就是将session存放在缓存中。这里介绍两种缓存(redis和memcache)。
redis包含字符串、列表、集合、哈希、有序集合这五种数据结构。memcache只支持key-value的键值对应的存储,所以说redis比memcache强大许多。但是memcache更轻量级,redis对内存消耗很大。如果你的网站的缓存只用于存储session。我觉得memcache会更好一些。
session存储设置方式(以memcache为例):
ini_set('session.save_handler', 'memcache');
session_save_path("tcp://127.0.0.1:11211");
注:可能有理解错误的地方,而且还有些地方搞不太懂,以后会修改添加。
session、cookie浅见的更多相关文章
- session & cookie(li)
Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...
- web也是区分前端与后端的,session\cookie辨析
<1>Ajax交互方式 Ext.Ajax.request( { //被用来向服务器发起请求默认的url url : "", //请求时发送后台的参数,既可以是Json对 ...
- 浅析session&cookie
session&cookie没有出现的黑暗时代 大家都知道,HTTP协议是一种无状态的协议,本次请求下一次请求没有任何的关联,所有没有办法直接用http协议来记住用户的信息,试想一向,每一次点 ...
- http之Session&Cookie
百度了一波session与Cookie,我发现这东西远比我想象中更复杂(可能是因为我不明白底层的运行原理).网上也是一堆的关于Session与Cookie区别/联系的文章,然而,我看完了还是一脸懵逼的 ...
- Asp.net MVC使用Model Binding解除Session, Cookie等依赖
上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖.其实这个也可以通 ...
- Asp.net MVC使用Filter解除Session, Cookie等依赖
本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应用场景. 同时针对MVC中的对于Session,Cookie等的依赖,如何使用Filter解依赖. 如果大家有 ...
- [转]Asp.net MVC使用Filter解除Session, Cookie等依赖
本文转自:http://www.cnblogs.com/JustRun1983/p/3279139.html 本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应 ...
- [转载]JavaEE学习篇之——Session&&Cookie
原文链接: http://blog.csdn.net/jiangwei0910410003/article/details/23337043 今天继续来看看JavaWeb的相关知识,这篇文章主要来讲一 ...
- Redis+Django(Session,Cookie)的用户系统
一.Django authentication django authentication提供了一个便利的user api接口,无论在py中 request.user,参见Request and re ...
随机推荐
- python学习2
1.input()返回的是字符串, 如果想读入一个数字,应该用int()转化 2.循环的写法与C不同的地方就是,for while等写完之后在那一行后面要加上一个冒号,这是比较特殊的地方. 还有就是r ...
- MySQL 主从复制与读写分离概念及架构分析
1.MySQL主从复制入门 首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中. 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的33 ...
- jsp基础
1.1动态页面 动态页面的优势: 1.交互性:网页会根据用户的要求和选而动态改变和显示内容; 2.自动更新:无需改变页面代码,便会自动更新的页面内容; 3.随机性:当不同的时间,不同的人访问同一网址时 ...
- [LeetCode] Length of Last Word 求末尾单词的长度
Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...
- 值得注意的IsHitTestVisible
这个属性我们平时可能并不怎么用.先来看下MSDN上的解释: 解释的非常专业,然而我并没有看懂. 说说我的理解吧:把这个属性设置为false,看起来没有变化,但操作上已经把他完全忽视了,不触发事件,可以 ...
- RN中listView的每个item等高
今天写ListView的每个Item的布局的时候发现,当文字太长时被截掉了不能完全显示,检查了很久发现没有设置固定高度都是可伸缩的为什么没有伸缩呢.看了很久才发现每个item是等高的,于是仔细检查才看 ...
- angularjs $emit $on $broadcast 父子 兄弟之间传值
父子之间 <div ng-controller="ParentCtrl"> <div ng-controller="ChildCtrl"> ...
- BZOJ 4742: [Usaco2016 Dec]Team Building
4742: [Usaco2016 Dec]Team Building Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 21 Solved: 16[Su ...
- 【BZOJ-2597】剪刀石头布 最小费用最大流
2597: [Wc2007]剪刀石头布 Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1016 Solved: ...
- 解决virtualbox装ghost xp装驱动时报portcls.sys蓝屏的问题
原因:portcls.sys是声卡驱动文件,驱动与模拟的声卡型号不匹配. 解决办法:进入PE,把C:\sysprep\audio目录删除.进入系统后用驱动精灵装驱动.