The Backdrop CMS site I am managing (I'm new to this) is having some performance issues that seem to be caused by hundreds of calls being made to ConfigFileStorage::read on page load (in the order of 300 to 400 calls).  Is there a way that I can cache this, adjust it so it's not making all of these calls?  It seems to be creating speed issues.

Thanks for any help or advice you can provide.


klonos's picture

Hello  👋

I won't claim to be the best person to answer this, but here's what I know...

Drupal 8 started by having configuration stored as files (although .yml instead of .json), but they made the decision to switch to storing it to the database instead, for performance reasons (for more on that, see Default active config changed from file storage to DB storage). Whether that was a good move or a bad move is a matter for another (very long) discussion.

In Backdrop, we decided to keep config stored in files, but a member of our community has forked and has been actively maintaining Silkscreen CMS, which allows using different configuration management backends (including the database). If you really need to reduce read/writes to the file system because of configuration management, then perhaps you should consider that fork instead of the "mainstream" Backdrop CMS.

Having said that though, I'm curious about the performance hit and how slow your site is vs. what you'd expect. Is this a site that has been converted from Drupal 7, and if so, then have you noticed it being slower than that? If it's a new site, I'd be curious to know how a D8 or D9 site with the same functionality would compare to it. Perhaps it's high time we repeated the performance tests like we've done in https://backdropcms.org/news/backdrop-vs-drupal-7-benchmarks-php-55-56-and-70.


Thanks for the great info and a pleasure to meet you.  The Jacksonville Public Library's previous site was D7 but maintained/controlled by a 3rd party agency so we had no view on performance other than the anecdotal, "seems pretty quick" even for the authenticated user.  The new Backdrop site does seem very snappy for the anonymous user (pretty much all of our users are at this level) but I am seeing data in New Relic (an application provided by Pantheon.io to help monitor site performance) that displays a lot of calls to that ConfigFileStorage::read.  Admittedly, I know just enough to be dangerous and am wondering if there is an opportunity to cache this info to reduce the amount of times it's called?  In the image below you can see the count on this was 403 which may be considered normal?

ConfigFileStorageRead example

Thanks again for your help.  Cheers!