Well, most of those variables will never matter to an anon user and those are the only ones eligible for page cache. But still, you have a point. We discuss this at length at http://drupal.org/node/590614. I even argued same as you. Please discuss there.
On Tue, Jan 12, 2010 at 10:09 AM, Ivan Sergio Borgonovo <[email protected]> wrote: > Hi, > > I saw a chance to improve the flexibility of D7 cache, with > something that looks as a very small change. > > I'm sorry if I'm missing something, but I'd really appreciate if > someone will point out what's wrong with my proposal. > > Substantially D7 doesn't serve cached pages if $_SESSION isn't empty > as stated in drupal_page_get_cache docs (I couldn't find anymore > where $_SESSION is tested...). > > This limit the use of cache substantially. > Nearly all users will have a not empty $_SESSION that will force > regeneration of ALL the pages. > > Currently core put in SESSION: > 1) openid > 2) user_overview_filter > 3) dblog_overview_filter > 4) node_overview_filter > 5) clean_url > 6) authorize_filetransfer_backends > 7) authorize_operation > 8) ignore_slave_server > 9) update_manager_update_projects > 10) authorize_results > 11) update_results > 12) messages > 13) locale_translation_filter > 14) maintenance_mode > 15) update_success > 16) updates_remaining > 17) maintenance_mode > 18) batch_form_state > 19) my_batch_results > 20) batches > > Most of them shouldn't actually forbid the use of ALL cached pages. > One way to retro-fit a more fine grained control over cache would be > to add a field to all the SESSION items in the array > > eg. > $_SESSION['session_var'] = $stuff; > $_SESSION['session_var']['cacheable'] = true; > > And in spite of invalidating all cached pages we could check if > there is any ['cacheable'] that is null/unset preserving current > behaviour and giving a chance to exploit more the cache. > > Then we could add the ['cacheable'] flag where it is safe a bit at a > time. > > If > bootstrap_invoke_all('boot') > in function _drupal_bootstrap_page_cache() > could be anticipated we could even give a chance to modules that > would like to control if the cache has to be used to fire. > eg. don't serve cached pages for user coming from this IP, don't > serve cached pages during these hours, always serve cached pages to > these IP etc... > > -- > Ivan Sergio Borgonovo > http://www.webthatworks.it > >
