CMSB v3.76 Released - Performance Optimizations
5 posts by 2 authors in: Forums > CMS Builder
Last Post: 5 hours ago (RSS)
By Dave - Friday at 10:09pm
Hi everyone,
We're excited to announce the release of version 3.76! We have implemented significant performance enhancements across the board. Every aspect of the codebase has been optimized for speed.
What's New
- Performance Updates: The core CMS system now loads in less than 0.01 seconds - literally faster than a blink of an eye!
- Schema File Changes: Schema files are now stored as
*.schema.php
instead of*.ini.php
and contain only essential information for faster loading and easier manual editing - Menu Order: Menu order data is now centralized in
/data/schema/__menu_order.php
, eliminating the need to update ALL schema files when changing menu order (great news for Git/source control users) - Field Order: Within schemas, field order is now inferred by file order, making it simpler to rearrange fields through copy/paste when needed
The full changelog for this release is as follows:
*** May 1, 2025 - Version 3.76 (Performance Optimizations)
SERVER REQUIREMENTS (Since Dec 2023): PHP 8.0+ and MySQL 5.7+ (or MariaDB 10.2+)
PERFORMANCE OPTIMIZATIONS
- CMS Speed: Core CMS system loads in less than 1/100th of a second (faster than you can blink!)
- CMS Fonts: Removed old font formats and switched to faster modern ones
- Schema Files: Now load faster and formatted for easier editing (field order is now implicit for cleaner diffs)
- Plugin Hooks: Unused plugin hooks are skipped to save time
- Menu Caching: Menu data is now cached and updated on database changes instead of being rebuilt on each page load
- Database Indexes: Added indexes for dragSortOrder and commonly referenced fields
- Internal Caching: Frequently called functions now cache their results instead of recalculating them
- Autoload Speed: Optimized autoloader and manually loading essential files for faster startupBACKWARDS INCOMPATIBLE CHANGES
- Old .ini.php schema files are automatically converted to .schema.php; if you rely on direct reads/writes of `.ini.php`
please update your code. Internal CMS functions automatically adapt to the new format.
- Plugin /language/ folders are no longer supported, use main language file for translations instead (much faster)FOR PROGRAMMERS
- Settings _dotEnvPath key introduced for optionally storing DB and Mail credentials in .env.php file outside of web root
- Upgraded Dependencies: Guzzle, PHPMailer, Firebase/JWT, OAuth2 libraries, etc. to latest versions
- SmartArray: Additional methods (getRawValue, contains, each, smartMap, or404, orDie, orThrow) and reorganized defaults
- SmartString: Additional methods (getRawValue, rawHtml, or404, orDie, orThrow, andPrefix) and reorganized defaults
- ZenDB: Additional methods: DB::likeContains(), likeContainsTSV(), likeStartsWith(), likeEndsWith() for simplified SQL pattern searches
- CMS: Added CMS::log($message) function for logging messages to the developer log - also accepts arrays and objects
- Programmers: Added new plugin action: plugin_menu_init
- Some older method aliases are deprecated with fallback callsBUG FIXES
- Uploads: Fixed issue where multiple new uploads with info fields only showed edit form for the first upload
- Misc code and other minor improvements
You can download the latest version here: https://www.interactivetools.com/download/
Please feel free to ask any questions or post any feedback, questions, or bugs you find!
Thank you!
interactivetools.com
By Dave - Friday at 10:23pm
Hi All,
Note the following additional information about plugin changes:
- Plugin Compatibility: Most plugins will continue to function without modification. However, some may require updates to work with the new .schema.php files (replacing the previous .ini.php format).
- Potential Issues: If you're seeing numerous notices from a specific plugin, it likely needs updating. This typically happens with older or custom plugins that run setup code on every page load, which we're now optimizing against for performance reasons.
Plugin Updates: We have updates for the following plugins to work with v3.76
- Permalinks: https://interactivetools.com/plugins/permalinks/
If you run into any issues or need assistance, please feel free to let us know.
interactivetools.com
You have the wrong date for the release date of the permalinks plugin. s/b May 2, 2025
yaadev.com
I am wondering if, since this is such a major breaking change, it would be worth considering bumping CMSB to version 4.x.x and following semver principles. It is so different from the v3 stream that trying to figure out where things change will be confusing.
yaadev.com
By Dave - 5 hours ago
Hi Jeff,
Thanks for the heads up! Just fixed the Permalinks plugin date to May 5th, 2025.
About going to 4.x.x, that's on our radar, but we want to get more of the internals updated first. This update shouldn't introduce any major breaking issues, as we've got fallback code that still handles the old .ini.php schema files, and I've upgraded a number of sites without any issue.
The main thing you might notice is if you have plugins running setup code on every page load (which we're now flagging since it kills performance). You'll see a notice at the top of the page when our createMissingSchemaTablesAndFields() function runs - like when you hit "Database Editor" and it says "Checking for database schema updates...". It's always done this, but we're just making it more clear.
The same is true for older plugins that recreate schema files on every load—you'll get a heads-up when logged in as admin so you can spot what needs optimization.
Thanks for the feedback and let me know if you run into any issues or have any further questions!
interactivetools.com