[drupal-devel] [feature] Lazy loading of theme system
Issue status update for http://drupal.org/node/19590 Project: Drupal Version: cvs Component: theme system Category: feature requests Priority: normal Assigned to: moshe weitzman Reported by: moshe weitzman Updated by: moshe weitzman Status: patch Attachment: http://drupal.org/files/issues/init_theme_lazy.patch (1.04 KB) Don't initialize the theme system during common.inc. Instead, wait for the first call to theme() and do it there. There are 2 big benefits: - sometimes you never call theme(), and thus don't ever need to include theme engine and template. thats a performance win. examples include RSS feeds, blogapi, distributed auth, ... - module developers are currently forced to use hook_init() to set a custom theme for a given page view. with this patch, they can wait and do this during hook_menu(). Without this delay, module developers are tempted, sometimes forced, to break the bootstrap and inadvertently load all the modules for every page view. I almost did this in Organic Groups module, where each group can shoose its own theme. You can break the bootstrap by doing something as simple as node_load(). This is a tiny patch, and merits consideration for 4.6, i think. moshe weitzman
Issue status update for http://drupal.org/node/19590 Project: Drupal Version: cvs Component: theme system Category: feature requests Priority: normal Assigned to: moshe weitzman Reported by: moshe weitzman Updated by: chx Status: patch Very nice, very clever, very big plus one. BTW. What about including the "do not use hook_init instead hook_menu" in the "update your modules" section of handbook? chx Previous comments: ------------------------------------------------------------------------ March 28, 2005 - 14:31 : moshe weitzman Attachment: http://drupal.org/files/issues/init_theme_lazy.patch (1.04 KB) Don't initialize the theme system during common.inc. Instead, wait for the first call to theme() and do it there. There are 2 big benefits: - sometimes you never call theme(), and thus don't ever need to include theme engine and template. thats a performance win. examples include RSS feeds, blogapi, distributed auth, ... - module developers are currently forced to use hook_init() to set a custom theme for a given page view. with this patch, they can wait and do this during hook_menu(). Without this delay, module developers are tempted, sometimes forced, to break the bootstrap and inadvertently load all the modules for every page view. I almost did this in Organic Groups module, where each group can shoose its own theme. You can break the bootstrap by doing something as simple as node_load(). This is a tiny patch, and merits consideration for 4.6, i think.
Issue status update for http://drupal.org/node/19590 Project: Drupal Version: cvs Component: theme system Category: feature requests Priority: normal Assigned to: moshe weitzman Reported by: moshe weitzman Updated by: moshe weitzman Status: patch that is already documented - http://drupaldocs.org/api/head/function/hook_init. it doesn't belong in the upgrading page it has worked this way for several rleases now. moshe weitzman Previous comments: ------------------------------------------------------------------------ March 28, 2005 - 08:31 : moshe weitzman Attachment: http://drupal.org/files/issues/init_theme_lazy.patch (1.04 KB) Don't initialize the theme system during common.inc. Instead, wait for the first call to theme() and do it there. There are 2 big benefits: - sometimes you never call theme(), and thus don't ever need to include theme engine and template. thats a performance win. examples include RSS feeds, blogapi, distributed auth, ... - module developers are currently forced to use hook_init() to set a custom theme for a given page view. with this patch, they can wait and do this during hook_menu(). Without this delay, module developers are tempted, sometimes forced, to break the bootstrap and inadvertently load all the modules for every page view. I almost did this in Organic Groups module, where each group can shoose its own theme. You can break the bootstrap by doing something as simple as node_load(). This is a tiny patch, and merits consideration for 4.6, i think. ------------------------------------------------------------------------ March 28, 2005 - 08:48 : chx Very nice, very clever, very big plus one. BTW. What about including the "do not use hook_init instead hook_menu" in the "update your modules" section of handbook?
Issue status update for http://drupal.org/node/19590 Project: Drupal Version: cvs Component: theme system Category: feature requests Priority: normal Assigned to: moshe weitzman Reported by: moshe weitzman Updated by: chx Status: patch Several releases? hook_menu came to existence in 4.5, and we have 4.6 coming up. And no, it was not working, I think it was you who have fixed bootstrap sometime around 4.5.2... chx Previous comments: ------------------------------------------------------------------------ March 28, 2005 - 14:31 : moshe weitzman Attachment: http://drupal.org/files/issues/init_theme_lazy.patch (1.04 KB) Don't initialize the theme system during common.inc. Instead, wait for the first call to theme() and do it there. There are 2 big benefits: - sometimes you never call theme(), and thus don't ever need to include theme engine and template. thats a performance win. examples include RSS feeds, blogapi, distributed auth, ... - module developers are currently forced to use hook_init() to set a custom theme for a given page view. with this patch, they can wait and do this during hook_menu(). Without this delay, module developers are tempted, sometimes forced, to break the bootstrap and inadvertently load all the modules for every page view. I almost did this in Organic Groups module, where each group can shoose its own theme. You can break the bootstrap by doing something as simple as node_load(). This is a tiny patch, and merits consideration for 4.6, i think. ------------------------------------------------------------------------ March 28, 2005 - 14:48 : chx Very nice, very clever, very big plus one. BTW. What about including the "do not use hook_init instead hook_menu" in the "update your modules" section of handbook? ------------------------------------------------------------------------ March 28, 2005 - 15:21 : moshe weitzman that is already documented - http://drupaldocs.org/api/head/function/hook_init. it doesn't belong in the upgrading page it has worked this way for several rleases now.
Issue status update for http://drupal.org/node/19590 Project: Drupal Version: cvs Component: theme system Category: feature requests Priority: normal Assigned to: moshe weitzman Reported by: moshe weitzman Updated by: Chris Johnson Status: patch Agree on this being a very nice patch. Nice performance optimization. +1 Chris Johnson Previous comments: ------------------------------------------------------------------------ March 28, 2005 - 07:31 : moshe weitzman Attachment: http://drupal.org/files/issues/init_theme_lazy.patch (1.04 KB) Don't initialize the theme system during common.inc. Instead, wait for the first call to theme() and do it there. There are 2 big benefits: - sometimes you never call theme(), and thus don't ever need to include theme engine and template. thats a performance win. examples include RSS feeds, blogapi, distributed auth, ... - module developers are currently forced to use hook_init() to set a custom theme for a given page view. with this patch, they can wait and do this during hook_menu(). Without this delay, module developers are tempted, sometimes forced, to break the bootstrap and inadvertently load all the modules for every page view. I almost did this in Organic Groups module, where each group can shoose its own theme. You can break the bootstrap by doing something as simple as node_load(). This is a tiny patch, and merits consideration for 4.6, i think. ------------------------------------------------------------------------ March 28, 2005 - 07:48 : chx Very nice, very clever, very big plus one. BTW. What about including the "do not use hook_init instead hook_menu" in the "update your modules" section of handbook? ------------------------------------------------------------------------ March 28, 2005 - 08:21 : moshe weitzman that is already documented - http://drupaldocs.org/api/head/function/hook_init. it doesn't belong in the upgrading page it has worked this way for several rleases now. ------------------------------------------------------------------------ March 28, 2005 - 08:32 : chx Several releases? hook_menu came to existence in 4.5, and we have 4.6 coming up. And no, it was not working, I think it was you who have fixed bootstrap sometime around 4.5.2...
Issue status update for http://drupal.org/node/19590 Project: Drupal Version: cvs Component: theme system Category: feature requests Priority: normal Assigned to: moshe weitzman Reported by: moshe weitzman Updated by: Dries Status: patch I wonder if this "performance win" is even measurable. That aside, it makes sense to do it this way. Dries Previous comments: ------------------------------------------------------------------------ March 28, 2005 - 15:31 : moshe weitzman Attachment: http://drupal.org/files/issues/init_theme_lazy.patch (1.04 KB) Don't initialize the theme system during common.inc. Instead, wait for the first call to theme() and do it there. There are 2 big benefits: - sometimes you never call theme(), and thus don't ever need to include theme engine and template. thats a performance win. examples include RSS feeds, blogapi, distributed auth, ... - module developers are currently forced to use hook_init() to set a custom theme for a given page view. with this patch, they can wait and do this during hook_menu(). Without this delay, module developers are tempted, sometimes forced, to break the bootstrap and inadvertently load all the modules for every page view. I almost did this in Organic Groups module, where each group can shoose its own theme. You can break the bootstrap by doing something as simple as node_load(). This is a tiny patch, and merits consideration for 4.6, i think. ------------------------------------------------------------------------ March 28, 2005 - 15:48 : chx Very nice, very clever, very big plus one. BTW. What about including the "do not use hook_init instead hook_menu" in the "update your modules" section of handbook? ------------------------------------------------------------------------ March 28, 2005 - 16:21 : moshe weitzman that is already documented - http://drupaldocs.org/api/head/function/hook_init. it doesn't belong in the upgrading page it has worked this way for several rleases now. ------------------------------------------------------------------------ March 28, 2005 - 16:32 : chx Several releases? hook_menu came to existence in 4.5, and we have 4.6 coming up. And no, it was not working, I think it was you who have fixed bootstrap sometime around 4.5.2... ------------------------------------------------------------------------ March 28, 2005 - 19:42 : Chris Johnson Agree on this being a very nice patch. Nice performance optimization. +1
Issue status update for http://drupal.org/node/19590 Project: Drupal Version: cvs Component: theme system Category: feature requests Priority: normal Assigned to: moshe weitzman Reported by: moshe weitzman Updated by: TDobes Status: patch +1... this also has the added benefit that the $custom_theme variable can be specified by a PHP node. (note that this doesn't work in preview, though... only after the node has been submitted) TDobes Previous comments: ------------------------------------------------------------------------ March 28, 2005 - 07:31 : moshe weitzman Attachment: http://drupal.org/files/issues/init_theme_lazy.patch (1.04 KB) Don't initialize the theme system during common.inc. Instead, wait for the first call to theme() and do it there. There are 2 big benefits: - sometimes you never call theme(), and thus don't ever need to include theme engine and template. thats a performance win. examples include RSS feeds, blogapi, distributed auth, ... - module developers are currently forced to use hook_init() to set a custom theme for a given page view. with this patch, they can wait and do this during hook_menu(). Without this delay, module developers are tempted, sometimes forced, to break the bootstrap and inadvertently load all the modules for every page view. I almost did this in Organic Groups module, where each group can shoose its own theme. You can break the bootstrap by doing something as simple as node_load(). This is a tiny patch, and merits consideration for 4.6, i think. ------------------------------------------------------------------------ March 28, 2005 - 07:48 : chx Very nice, very clever, very big plus one. BTW. What about including the "do not use hook_init instead hook_menu" in the "update your modules" section of handbook? ------------------------------------------------------------------------ March 28, 2005 - 08:21 : moshe weitzman that is already documented - http://drupaldocs.org/api/head/function/hook_init. it doesn't belong in the upgrading page it has worked this way for several rleases now. ------------------------------------------------------------------------ March 28, 2005 - 08:32 : chx Several releases? hook_menu came to existence in 4.5, and we have 4.6 coming up. And no, it was not working, I think it was you who have fixed bootstrap sometime around 4.5.2... ------------------------------------------------------------------------ March 28, 2005 - 11:42 : Chris Johnson Agree on this being a very nice patch. Nice performance optimization. +1 ------------------------------------------------------------------------ March 28, 2005 - 11:46 : Dries I wonder if this "performance win" is even measurable. That aside, it makes sense to do it this way.
Issue status update for http://drupal.org/node/19590 Project: Drupal Version: cvs Component: theme system Category: feature requests Priority: normal Assigned to: moshe weitzman Reported by: moshe weitzman Updated by: chx Status: patch What's more, a PHP block is also capable of setting $custom_theme (no need to output anything, thus this will be an invisible block). This combined with the powerful block admin pretty much obsoletes sections.module and is capable of much more. chx Previous comments: ------------------------------------------------------------------------ March 28, 2005 - 14:31 : moshe weitzman Attachment: http://drupal.org/files/issues/init_theme_lazy.patch (1.04 KB) Don't initialize the theme system during common.inc. Instead, wait for the first call to theme() and do it there. There are 2 big benefits: - sometimes you never call theme(), and thus don't ever need to include theme engine and template. thats a performance win. examples include RSS feeds, blogapi, distributed auth, ... - module developers are currently forced to use hook_init() to set a custom theme for a given page view. with this patch, they can wait and do this during hook_menu(). Without this delay, module developers are tempted, sometimes forced, to break the bootstrap and inadvertently load all the modules for every page view. I almost did this in Organic Groups module, where each group can shoose its own theme. You can break the bootstrap by doing something as simple as node_load(). This is a tiny patch, and merits consideration for 4.6, i think. ------------------------------------------------------------------------ March 28, 2005 - 14:48 : chx Very nice, very clever, very big plus one. BTW. What about including the "do not use hook_init instead hook_menu" in the "update your modules" section of handbook? ------------------------------------------------------------------------ March 28, 2005 - 15:21 : moshe weitzman that is already documented - http://drupaldocs.org/api/head/function/hook_init. it doesn't belong in the upgrading page it has worked this way for several rleases now. ------------------------------------------------------------------------ March 28, 2005 - 15:32 : chx Several releases? hook_menu came to existence in 4.5, and we have 4.6 coming up. And no, it was not working, I think it was you who have fixed bootstrap sometime around 4.5.2... ------------------------------------------------------------------------ March 28, 2005 - 18:42 : Chris Johnson Agree on this being a very nice patch. Nice performance optimization. +1 ------------------------------------------------------------------------ March 28, 2005 - 18:46 : Dries I wonder if this "performance win" is even measurable. That aside, it makes sense to do it this way. ------------------------------------------------------------------------ March 29, 2005 - 10:46 : TDobes +1... this also has the added benefit that the $custom_theme variable can be specified by a PHP node. (note that this doesn't work in preview, though... only after the node has been submitted)
Issue status update for http://drupal.org/node/19590 Project: Drupal Version: cvs Component: theme system Category: feature requests Priority: normal Assigned to: moshe weitzman Reported by: moshe weitzman Updated by: adrian Status: patch oooooh nifty! (that is all .. oh... and +1 for 4.6) adrian Previous comments: ------------------------------------------------------------------------ March 28, 2005 - 15:31 : moshe weitzman Attachment: http://drupal.org/files/issues/init_theme_lazy.patch (1.04 KB) Don't initialize the theme system during common.inc. Instead, wait for the first call to theme() and do it there. There are 2 big benefits: - sometimes you never call theme(), and thus don't ever need to include theme engine and template. thats a performance win. examples include RSS feeds, blogapi, distributed auth, ... - module developers are currently forced to use hook_init() to set a custom theme for a given page view. with this patch, they can wait and do this during hook_menu(). Without this delay, module developers are tempted, sometimes forced, to break the bootstrap and inadvertently load all the modules for every page view. I almost did this in Organic Groups module, where each group can shoose its own theme. You can break the bootstrap by doing something as simple as node_load(). This is a tiny patch, and merits consideration for 4.6, i think. ------------------------------------------------------------------------ March 28, 2005 - 15:48 : chx Very nice, very clever, very big plus one. BTW. What about including the "do not use hook_init instead hook_menu" in the "update your modules" section of handbook? ------------------------------------------------------------------------ March 28, 2005 - 16:21 : moshe weitzman that is already documented - http://drupaldocs.org/api/head/function/hook_init. it doesn't belong in the upgrading page it has worked this way for several rleases now. ------------------------------------------------------------------------ March 28, 2005 - 16:32 : chx Several releases? hook_menu came to existence in 4.5, and we have 4.6 coming up. And no, it was not working, I think it was you who have fixed bootstrap sometime around 4.5.2... ------------------------------------------------------------------------ March 28, 2005 - 19:42 : Chris Johnson Agree on this being a very nice patch. Nice performance optimization. +1 ------------------------------------------------------------------------ March 28, 2005 - 19:46 : Dries I wonder if this "performance win" is even measurable. That aside, it makes sense to do it this way. ------------------------------------------------------------------------ March 29, 2005 - 11:46 : TDobes +1... this also has the added benefit that the $custom_theme variable can be specified by a PHP node. (note that this doesn't work in preview, though... only after the node has been submitted) ------------------------------------------------------------------------ March 29, 2005 - 12:03 : chx What's more, a PHP block is also capable of setting $custom_theme (no need to output anything, thus this will be an invisible block). This combined with the powerful block admin pretty much obsoletes sections.module and is capable of much more.
participants (6)
-
adrian -
Chris Johnson -
chx -
Dries -
moshe weitzman -
TDobes