Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

 

Announcing Silverstripe CMS 6.1.0 with improved performance

We're pleased to announce the release of Silverstripe CMS 6.1.0.

Read post

Silverstripe CMS 6.1.0 Release Announcement

We're pleased to announce the release of Silverstripe CMS 6.1.0. This update offers a faster and smoother experience for all users, from developers to content editors.

Our main goal with this release was performance optimization, and we've made significant improvements across database queries, how assets are handled, and session management.

Improved Performance for Common CMS Operations

We've addressed frequent slowdowns within the CMS by reducing the number of database requests and improving the efficiency of those requests, improving CMS performances, particularly for large-scale projects or configurations where the web server and database are on separate servers.

The main focus has been on commonly used CMS operations, such as the page site tree, and the files section, by reducing how often we talk to the database.

This was achieved using a variety of methods, including by combining multiple single-ID queries into more efficient batch queries (WHERE "ID" IN (...)) and temporarily caching results for the current HTTP request.

File System Performance Improvements

If you have thousands of files in one folder, you might have noticed things slowing down because of how the filesystem abstraction layer checks for files. We've introduced new ways to speed this up:

  • Fewer Checks: We've cut down on unnecessary checks for empty folders.
  • Quick Empty Check: The new Filesystem::isEmpty() method uses a super-fast check, often only needing to look at one file with the default local adapter.
  • Globbing Support: New interfaces perform file lookups using glob patterns, which dramatically speeds up finding image variants - a massive win for performance in large asset libraries.

New Tools for Data Performance & Control

For developers who love to fine-tune their applications, 6.1.0 brings new features for advanced data and query management.

Request-level Database Query Caching

You can now cache the results of DataList and SQLSelect queries for the duration of the current HTTP request. This is perfect for those custom queries that run multiple times during a single application request.

Just call ->setUseCache(true) on your $DataList or $SQLSelect object to turn it on. This change also means older methods like DataObject::get_by_id() are being phased out, encouraging you to use cached DataLists instead.

Generated Column Support

The CMS now supports Generated Columns, where the column value is calculated and maintained by the database itself. This offers the following advantages:

  • Sorting: Easily sort a GridField on a complex calculated field.
  • Functional Indexes: Use complex expressions in indexes for faster filtering.
  • Data Integrity: Values are always correct, even if updated directly via raw SQL.

Improved Indexing and Control

We've added several enhancements to give you more control and better default performance for your database indexes:

  • Composite Indexes for default_sort: The ORM now creates a composite index for multi-field sorts, making it more efficient to sort large data sets.
  • Dropping Indexes: You can now explicitly drop old or unwanted indexes by setting the index value to false in your indexes configuration.
  • New Default Indexes: Several tables, including Member (for auth hashes) and join tables with a default_sort, now have new indexes to improve common operations.

Non-Blocking Session Handlers

The standard PHP session handler locks the session file, meaning multiple simultaneous requests from the same user have to wait for each other (including AJAX). We've introduced three new non-blocking session handlers to get rid of this delay:

Class nameDescription
FileSessionHandler The new default, storing sessions in files without locking.
CacheSessionHandler Stores sessions in a PSR-16 cache, such as Redis
DatabaseSessionHandler Stores sessions in the database

Previously, in order to get the benefits of non-blocking sessions you needed to use a module such as silverstripe/dynamodb or silverstripe/hybridsessions. Now you no longer need to use these modules - you can (and should) just use one of these new session handlers instead.

Password strength indicator

The ConfirmedPasswordField now gives you real-time, visual feedback on password strength as you type. This is active in the member edit forms and the "lost password" process when using the EntropyPasswordValidator, providing a better, more secure user experience right out of the box.

Finally, we've updated our performance documentation with new sections and tips, making sure you have all the knowledge to get the most speed out of your Silverstripe CMS projects.

Keen to get your upgrade underway?

Talk to your Digital Agency or Developer about upgrading

Haven’t got a Developer or Agency? No problem! Browse the Silverstripe CMS Developer Network and filter by location to find a Silverstripe CMS Developer near you.

Or reach out to Silverstripe directly to upgrade your project.

Developers, check out our documentation

This release announcement does not cover the full details of what is included in the release. Be sure to review the full changelog before planning your next site upgrade.

Head to our Developer Docs to view the CMS 6.1 changelog.

Upgrade today to take advantage of all these performance boosts!

About the author
Steve Boyd

Steve is a Principal Product Developer in the CMS Squad.

Post your comment

Comments

No one has commented on this page yet.

RSS feed for comments on this page | RSS feed for all comments