仅在必要时更改会话属性的值有什么好处吗



我注意到有些人是如何做到这一点的。这让我怀疑它是否有益。例如,我检查会话的任一属性是否满足给定条件。然后,对对象的每个属性分别执行此操作。

假设我有两个柜台。一旦其中一个超过1,两个都应该重置:

let notes = [];
if (req.session.counters[0] > 1 || req.session.counters[1] > 1) {
notes.push("A counter has exceeded the limit.");
if (req.session.counters[0] > 1) {
req.session.counters[0] = 0;
}
if (req.session.counters[1] > 1) {
req.session.counters[1] = 0;
}
}

它几乎与此相同:

let notes = [];
if (req.session.counters[0] > 1 || req.session.counters[1] > 1) {
notes.push("A counter has exceeded the limit.");
req.session.counters[0] = 0;
req.session.counters[1] = 0;
}

那么,有什么好处吗?比如更快的执行?或者这几乎毫无意义?

在第一个示例中,如果counters[0] === 5counters[1] === 0.5,则在if语句之后,counters[0] === 0counters[1] === 0.5;而在第二个示例中两者都为0。如果计数器不能为负数或是一个分数值,这并不重要


忽略这一点,将取决于会话值的持久化方式。

如果只有一个服务器,则可以将值存储在内存中。在这种情况下,没有理由使用示例#1。

如果您正在使用多个服务器&用户可以在它们之间跳转,但应该具有相同的会话,然后值应该持久化在数据库/键值存储中。所有服务器都将从该数据库/键值存储中读取值。写一个整数的开销很小,无论你使用什么数据库,但如果你有更大的写操作,示例#1可能是值得的;甚至更糟"--到网络的速度比内存慢得多。

可读性是否胜过微观优化取决于您的应用程序。虽然转向了基于观点的答案,但我想说,在这种情况下,它绝对是这样。

最新更新