Try to do less in theme_get_settings() on every request

Created on 13 July 2015, about 10 years ago
Updated 26 May 2025, 2 months ago

Problem/Motivation

Anonymous user, frontpage, without page_cache (entire request time 94ms).

In there we spend 1ms in theme_get_setting(), which does quite a lot:

Proposed resolution

Try to cache the theme settings not in the request but between requests. One really good place could be the cache entry for the active theme object.
In case we would store it there, we would avoid the call to $themes = \Drupal::service('theme_handler')->listInfo(); in there.

Remaining tasks

User interface changes

API changes

Data model changes

πŸ“Œ Task
Status

Postponed: needs info

Version

11.0 πŸ”₯

Component

theme system

Created by

πŸ‡©πŸ‡ͺGermany dawehner

Live updates comments and jobs are added and updated live.
  • Performance

    It affects performance. It is often combined with the Needs profiling tag.

  • needs profiling

    It may affect performance, and thus requires in-depth technical reviews and profiling.

  • stale-issue-cleanup

    To track issues in the developing policy for closing stale issues, [Policy, no patch] closing older issues

Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

  • πŸ‡ΊπŸ‡ΈUnited States smustgrave

    Thank you for creating this issue to improve Drupal.

    We are working to decide if this task is still relevant to a currently supported version of Drupal. There hasn't been any discussion here for over 8 years which suggests that this has either been implemented or is no longer relevant. Your thoughts on this will allow a decision to be made.

    Since we need more information to move forward with this issue, the status is now Postponed (maintainer needs more info). If we don't receive additional information to help with the issue, it may be closed after three months.

    Thanks!

  • πŸ‡¨πŸ‡­Switzerland berdir Switzerland

    I did test this with blackfire and theme_get_settings() doesn't show up at all, with a scenario of disabled page cache so that most blocks are cached and only the whole page is not and this is being called.

    I stepped through the call in xdebug and all things that we call are essentially already initialized and ready, such as the active theme and theme handler list info or is config that's loaded from fast cache.

    This hasn't been updated since 2015, so I'm going to close it.

    We have #3035288: Deprecate theme_get_setting() β†’ to convert this to OOP which will simplify the code a bit I think.

Production build 0.71.5 2024