The session is a way to preserve user identity while visiting different website pages (e.g. once logged-in he must stay logged-in). From client side (web browser) session is identified using session identifier (sid), which depending on web browser capabilities can be specified:
- in each url as "?sid=..." parameter (the "..." is replaced with actual identifier)
- in "sid" cookie once
During link building the "Session::NeedQueryString" method is called to detect if "?sid=..." should be present in built url. That method has built-in cache so that it doesn't reevaluate it's stuff on each call. Turns out due bug in the code the cache isn't ever used, which results in performance issue (small, but still) during link building.
Use strict comparison (the "$this->CachedNeedQueryString !== null") instead of non strict comparison ("$this->CachedNeedQueryString != null") in "Session::NeedQueryString" method.