我使用CMS框架在页面创建时启动session_start(),但是90%的网站访问者是不需要会话的访客,导致服务器上有大量空的会话变量。
这里最好的做法是什么?如果登录,我需要提前知道,所以我猜这意味着两者:
还是有一个更好的修复,我不知道吗?
答案 0 :(得分:1)
如果您期望大量的访客流量而不需要会话,那么除非您绝对需要,否则请不要使用它。我通常做的是为会话创建一个类,并将session_start添加到类的构造函数中。然后,当我需要会话时,我可以简单地在底层global.class中调用会话类。
答案 1 :(得分:1)
许多大型网站推迟了会话初始化,直到实际需要,例如在购物车页面和每个用户的用户个人资料屏幕上。
从理论上讲,这并不复杂,如果您使用的是所有页面中都需要的配置文件,您可以简单地为不需要任何用户识别的页面换出不同的配置文件。
您正在使用CMS框架,所以也许您在其中受到限制。如果您可以区分页面创建过程,在一个案例中使用session_start();
而在另一个案例中不使用,那么这应该不是那么重要。保持登录用户登录一旦返回到系统的其他区域(索引文件等)将无法正常工作。当然,您可以使用local_storage
来帮助您,但仅依靠JavaScript并不是非常可靠。
最简单的方法可能是将系统吐出两个区域,一个不使用任何会话(索引,其他信息文件等),因此这些页面创建背后的过程会有所不同,即不使用会话。
也许你可以有一个像上面提到的会话类,但它很可能会与导致会话失败的其他输出冲突,但是如果你可以刷新其他输出那么这可能会有效,但这对我来说是一种黑客攻击意见并没有真正解决前面提到的问题。
您是否考虑过更改会话的生命周期?默认设置是24分钟,但会将其减少到15更改任何内容? 24分钟对你来说真是太棒了吗?也许您环境中的设置会使它们更长。系统的其他方面是否可能是实际的性能问题?您是自己托管系统还是那些空会议真的无关紧要?