当我们在会话中存储 2-3 个额外变量时,性能问题是什么?为了:
保存 1-2 个查询(每页加载)?
让代码更简单?
网站点击率正常。。
编辑@all 我在谈论两个三个会话变量...简单的值,如数字、ID 等
当我们在会话中存储 2-3 个额外变量时,性能问题是什么?为了:
保存 1-2 个查询(每页加载)?
让代码更简单?
网站点击率正常。。
编辑@all 我在谈论两个三个会话变量...简单的值,如数字、ID 等
不会有性能问题。您可以在会话中存储对象和变量,并且不会大大降低性能。
每次访问使用会话的 PHP 脚本/页面时,都必须读取会话数据。默认情况下,该数据作为文件存储在磁盘上(例如,您可以覆盖它并使用数据库)
因此,基本上,对于每个页面加载,PHP 都必须读取(并且很可能会写入)一定数量的会话数据。您在会话中存储的数据越多,会话文件就越大。
如果只存储几个变量,没有问题。但是如果你开始存储像巨大的数组这样的东西,如果你的命中率增加,你就会遇到问题。
--
如果您想通过在会话中存储尽可能多的数据来“保持代码更简单”,那么您可能会产生更多问题。例如 - 如果您希望将来启用 API 访问,您可能必须删除大量会话数据存储/检索代码并用其他方法替换它。
--
可能与您的问题无关:
如果您想在会话中存储某种全局应用程序状态以便不必重新计算它,您应该使用其他一些缓存方法而不是会话。
实际上,听起来你最终会节省一点,性能方面。如果这些值是简单的字符串或数字,甚至是小数组或对象,这将是您更好的选择。但是,如果您要保存一个包含数千个键 => 值对的数组,那么重新运行查询可能会更好,具体取决于您在给定情况下是否需要它。
请记住,每次刷新时,都会触发存储在会话变量中的每个对象的构造函数。大物体 = 重载荷。
它不是一个性能问题,而是实用性。通过阅读您的问题对我来说很明显,您不会考虑在会话中存储巨大的数组。
当另一个用户的某些操作需要影响存储在当前会话中的值时,该问题变得实际,即显示用户可以访问和不能访问的布尔数组。将这些缓存在会话中会使撤销权限变得不切实际。
没有理由避免存储被认为是不可变的字符串和值,或者可以通过当前用户的操作轻松重新设置(即更改其用户名)。