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 ...
随机推荐
- 虚拟机+apache+php+mysql 环境安装配置
虚拟机的安装:直接下一步即可,注意修改路径. 安装完成后新建虚拟机,直接下一步.如果选择镜像文件后出现错误,可以试着去修改电脑bios中的虚拟化设置,改为enable,如下图: apache安装: 1 ...
- ngx_http_core_module模块.md
Directives aio Syntax: aio on | off | threads[=pool]; Default: aio off; Context: http, server, locat ...
- mongodb 速成笔记
以下环境为mac osx + jdk 1.8 + mongodb v3.2.3 一.安装 brew安装方式是mac下最简单的方式 brew update brew install mongodb 其它 ...
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...
- day8-------socket网络编程
简单的socket 一个server同时只能处理一个链接 代码如下: server端代码 #author = ruixin li import socket server = socket.so ...
- bzoj2243
2243: [SDOI2011]染色 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 6753 Solved: 2496[Submit][Status ...
- 一次基于etcd的分布式锁自动延时失败问题的排查
今天在测试基于etcd的分布式锁过程中,在测试获取锁后,释放之前超出TTL时长的情况下自动延长TTL这部分功能,在延长指定key的TTL时总是返回404错误信息,在对目标KEY更新TTL时目标KEY已 ...
- Android 轮换控件
首先是控件轮换 一.创建主布局 1.用到的控件是 TextSwitcher (文本轮换) 那么其他对应的也就是 ImageSwitcher (图片轮换) <LinearLayout xmlns: ...
- DirectWrite 模糊问题——如何正确根据DIP计算实际像素
使用Windows.Graphics.Display.DisplayInformation的时候,一定要根据RawPixelsPerViewPixel计算,而不是RawDpiX或RawDpiY,或许L ...
- 北京培训记day4
智商题QAQ-- T1:求>=n的最小素数,n<=10^18 暴力枚举n-n+100,miller-rabin筛法 T2:给定一个01矩阵,每次选择一个1并将(x,y)到(1,1)颜色反转 ...