These are trying times for us all as we are all being tested in different ways. Here at Expression, we certainly have our own challenges, but thankfully we have been able to respond positively and continue to push the platform to deliver high end experiences to our customers. With increased demand on our infrastructure and a growing need for digital commerce, Expression has been put to the test and I am pleased to say that we have been able to deliver on our promises.
It is somewhat serendipitous that a few months back we invested our time heavily in both performance upgrades and auto-scaling capabilities - today that is helping us to meet the increase worldwide in traffic and requests for digital commerce. This has helped us - and more importantly you, our customers - adapt quickly during this unprecedented time.
For these reasons, I continue to be extremely proud of the work our team has done, and it is my pleasure to be able to share today’s updates and upcoming news that might positively impact your new normal.
Sign up for free today - Join our network of developers.
Some of you might find themselves with extra time on their hands, or a stronger desire to find a platform that is flexible and offers more in a time of less. We have completely revamped the sign up experience and made available #100FreeforLifetime packages for those who want to open their world and explore with something new.
If you’re a developer - or know of one - looking for a platform to grow into and/or want to make a switch from one of the usual suspects, now is a great time to get started as we are offering a limited number of lifetime access to Expression. We are building a network of developers to help us evolve, create more great stuff and share our project workload with. So go ahead sign up for free today, give Expression a spin, and let us know what you think! Make sure to invite your friends along so they don’t miss out on this inside scoop!
Low Level API Caching, PHP Migration
Over the last development cycle we’ve poured a ton of time and effort into further improving performance. Our customers have asked for speed improvements, and we have listened and delivered!
Performance was increased through two development initiatives:A new caching layer was added, slightly above the MySQL layer. This is a highly aggressive, per-request cache which benefits nearly every aspect of the application. We’ve changed the hosting of Expression’s application code to run off of dedicated SSD drives hanging directly off of our web servers. Expression is a large application, and it’s not always guaranteed that the code needed to fulfill a given request is fully cached - by adjusting how we host the application, we’ve been able to accelerate this time-to-cache and serve requests with a higher degree of consistency.
Case Study: To keep it real we used a live site which was known to have performance challenges and ran a series of requests against a random sampling of URLs.
The result is shown in the below graph.
The X-Axis illustrates the number of randomized requests.
The Y-Axis indicates the number of seconds to resolve the request.
*Note that the test was run from an initial state with a fully cleared cache state.
What we see in terms of practical results is not only a faster time per request - but a more linear relationship between the number of requests and the total time taken, where individual requests aren’t taking abnormally longer than others to complete.
You Want More? Opt-in Element Caching
There is a new way for developers to improve the frontend speed of their sites: Element Caching. Element Caching allows developers to indicate specific Element are appropriate to be cached up to a given Time To Live(TTL)
This can be configured per Element but setting the relevant property in the Bundle Editor:
If instead of globally enabling caching for a given Element, you would like to enable it only for a specific instance of that element, The TTL value can be specified where the Element is called directly:
When Elements are configured with TTLs, the minimum TTL value on the page will “bubble up” as a Cache-Control: max-age header. This allows browsers and CDNs such as CloudFlare to respect the cache and not bother to re-fetch a new version of the page if Expression is just going to redeliver the same content.
Just remember - to benefit from this enhancement, each Element on the page needs to have a TTL set.
Expression 3.0 - Bundles, Content Playlists & Performance Milestone
Bundles 2.0 - Guest Beta
Bundles have been a core part of Expression since 2016 - and this year they’re getting a major boost. This feature is a quantum-leap of how we handle custom code within Expression - with a heavy focus on Git Integration - allowing developers and teams with their own Git based workflows to integrate seamlessly with Expression’s’ broad feature set, while preserving the fantastic branching, auditing and code-review capabilities you get from Git.
If you’re currently working in Expression and would like to give Bundles 2.0 a test drive, let us know!
Contact us [email protected]
Want to see it in action?
There’s a lot to cover - you can start by taking a look at a live demo over at: http://bundles-demo.xpr.cloud.
Curious developers eager to get a head start can take a look at the code behind this demo over at our official GitHub: @ExpressionCloud
Will this be available for my existing Bundles?
For now, Bundles 2.0 is in Beta, but ready for any developers who are hungry for what they provide to give it a test drive - Bundles in their current form aren’t going anywhere yet! Traditional Bundles, and Bundles 2.0 can coexist within the same Expression Instance.
We’ll continue supporting “traditional” bundles until we can provide developers with the same user-friendly UI you’re used to - and a comprehensive migration process.
Don’t worry - we won’t leave you hanging! We’ve been doing this for a while now, and we pride ourselves on backwards compatibility.
Expression 3.0 Milestone
Expression 3.0 was an internal milestone - With Bundles 2.0 (currently in Beta), Content Playlists 2.0 and this past quarter’s improvements in API Performance, we’ve reached this Milestone and will officially start using the 3.X.X designations as Bundles 2.0 transitions out of Beta status.
Look forward to seeing this milestone show up in your version of Expression. You can always refer to the changelog of your instance on the welcome page of your Expression. As we look to the future, we plan to advance our Major Version number more regularly from here on - delivering meaningful sets of features and improvements that directly benefit our developers, customers, and users.
As you can see, there is no down time for Expression. We truly are in this together and believe that we can learn and get stronger together as well. Staying home doesn’t mean staying still - we continue to strive for a better platform that quickly adapts to your needs. I want to take this opportunity to send out a warm message of solidarity and wishes for you and your family to stay safe and healthy.