出于某种原因,HTTP是无状态协议。会话将状态焊接到HTTP上。根据经验,避免使用会话状态。

更新:HTTP级别没有会话的概念; 服务器通过为客户端提供唯一ID并告知客户端在每个请求上重新提交它来提供此功能。然后,服务器将该ID用作Session对象的大哈希表中的键。每当服务器获得请求时,它都会根据客户端随请求提交的ID,从会话对象的哈希表中查找会话信息。所有这些额外的工作都是可扩展性的双重打击(HTTP是无状态的一个重要原因)。Whammy One:它减少了单个服务器的工作量。

Whammy Two:它更难以扩展,因为现在你不能将请求路由到任何旧服务器 - 它们并不都具有相同的会话。您可以将具有给定会话ID的所有请求固定到同一服务器。这并不容易,而且它只是一个单点故障(不是整个系统,而是整个系统的大块)。或者,您可以在群集中的所有服务器之间共享会话存储,但现在您有更多复杂性:网络连接内存,独立会话服务器等。

鉴于这一切,您在会话中输入的信息越多,对性能的影响就越大(如Vinko指出的那样)。同样正如Vinko指出的那样,如果你的对象不是可序列化的,那么会话就会行为不端。因此,根据经验,避免在会话中放置超过绝对必要的内容。

@Vinko您通常可以通过在您发回的响应中嵌入您正在跟踪的数据并让客户端重新提交它来解决服务器存储状态,例如,在隐藏的输入中向下发送数据。如果您确实需要服务器端状态跟踪,则它应该位于您的后备数据存储区中。

(Vinko补充说:PHP可以使用数据库存储会话信息,并让客户端每次重新提交数据可能会解决潜在的可扩展性问题,但是打开了一大堆安全问题,你必须注意现在客户端控制所有您的国家)

php对象里面存对象,PHP:在$ _SESSION中存储'对象'相关推荐

  1. 用java在redis中存储对象

    最近需要封装一个操作redis的工具类,不知道怎么向redis中存储对象,想到过用java反射去做.在网上搜索了一下,发现可以用序列化对象的方式去存储.再此我整理了一下 感谢,残剑_提供的方法:htt ...

  2. 在HTML5 localStorage中存储对象

    我想将JavaScript对象存储在HTML5 localStorage ,但是我的对象显然正在转换为字符串. 我可以使用localStorage存储和检索原始JavaScript类型和数组,但是对象 ...

  3. word2013插入excel对象报错_在 Excel 电子表格中插入对象

    如果在 Excel 或支持 OLE 的任何程序(如 Word)之间复制信息,可以将信息复制为 链接对象 或 嵌入对象 . 链接对象与嵌入对象之间的主要区别是数据存储位置,以及对象在放置到目标位置后 目 ...

  4. java对象间的转型,详细讲述Java中的对象转型

    向上转型:子类对象转为父类,父类可以是接口.公式:Father f = new Son();Father是父类或接口,son是子类. 向下转型:父类对象转为子类.公式:Son s = (Son)f; ...

  5. JAVA中创建的redis对象_详解Java在redis中进行对象的缓存

    java在redis中进行对象的缓存一般有两种方法,这里介绍序列化的方法,个人感觉比较方便,不需要转来转去. 一.首先,在存储的对象上实现序列化的接口 package com.cy.example.e ...

  6. html 属性存储对象,在HTML5 localStorage中存储对象

    Stringify并不能解决所有问题 似乎这里的答案并未涵盖JavaScript中可能的所有类型,因此这里有一些关于如何正确处理它们的简短示例://Objects and Arrays: var ob ...

  7. K8s 集群中存储对象灾备的落地实践

    谈到存储对象的灾备,我们可以想象成当你启动了挂载卷的 Pod 的时候,突然集群机器宕机的场景,我们应该如何应对存储对象的容错能力呢?应用的高可用固然最好,但是灾备方案一直都是最后一道门槛,在很多极限情 ...

  8. python存储对象的数组_Python:在2d数组中存储对象并调用其方法

    我正在尝试制作一个象棋应用程序.代码如下:#file containing pieces classes class Piece(object):` name = "piece" ...

  9. store 存取数据数组对象_如何从Firestore文档中获取对象数组

    我在Firestore中有一个如下所示的数据结构: 父POJO是:public class Restaurant { private Double distance; private GeoPoint ...

最新文章

  1. raid模式_基于网络的磁盘热备技术|网络RAID-1
  2. 安装RRDtool 1.4.5
  3. HTML 标签 参考手册
  4. EasyUI + Bootstrap 界面整合
  5. SpringMVC学习日记 1.Spring框架
  6. FTP客户端的基本使用---Linux学习笔记
  7. 怎么在linux上修改mysql端口映射_如何在Linux中更改默认的MySQL / MariaDB端口
  8. qdialog 返回值_c – QDialog exec()并获取结果值
  9. 更改 SQL Server 2000 端口号
  10. 智能体行为建模与方法
  11. 07_支持向量机2_统计学习方法
  12. drools 将添加switch支持
  13. python输入文字字符串、如何提取字符_用python正则表达式提取字符串
  14. cve_2019_0708复现踩坑
  15. 世界上第一代电子计算机取名为,计算机应用基础知识计算机应用基础试题及答案...
  16. 嵌入式开发学习(5)S5PV210开发板刷系统那点破事儿之一
  17. Unity中使用另一个遮罩方案解决Mask组件的锯齿现象
  18. 熬夜肝了这一份C++开发详细学习路线
  19. 无法加载java插件_向各位牛人请教:正常安装的Java,浏览器却不能加载插件怎么办?...
  20. GD32450i-EVAL学习笔记 18 - USB FS

热门文章

  1. SQL各种join用法
  2. VMware / 三种联网方法及原理
  3. Cpp 对象模型探索 / new 对象时加括号和不加括号时的差别
  4. RTL8189疯涨还缺货怎么办,可以用ESP8089替代.
  5. linux下编写时钟代码,Linux时间子系统之一:clock source(时钟源)【转】(示例代码)...
  6. 百度AI原生云实践: 基于容器云打造 AI 开发基础设施
  7. jedis set集合 java,使用Jedis操作String、List、Set、Map等常见数据 | zifangsky的个人博客...
  8. 计算机英语教程第6版司爱侠,计算机专业英语教程(第3版)宋德福 司爱侠 练习参考答案...
  9. 织梦(dedecms)当前位置{dede:field name='position' /}修改
  10. BZOJ 4448 主席树+树链剖分(在线)