Following the last update from March, we have rolled out a few more user-visible changes this time.
Here is a summarised list of the changes:
The following sections are in-detail explanations of the changes that we've just deployed.
Our front-end web server (
nginx) is now using ETags, which basically make sure that browsers won't retrieve the content again if the file already exists in the cache and has the same ETag as the current file on the server, hence increasing page load performance in subsequent requests after the initial one.
The technical reason why we had ETags disabled so far, was that files inside of Nix store paths always have the same modification time and by default, nginx generates the ETag by concatenating the modification time with the file size.
To illustrate this: Let's say we have a file containing the text
hello world, which has a size of 11 characters. This would result in the ETag
Now let's assume the content of file got changed to
adios world, which has the same length. The same ETag (
1-11) as the one from the old file would be sent to the browser and the server will respond with an HTTP 304 (Not Modified), causing the browser to load the old file from the cache.
Static files (everything beginning with
/static in the URL) are served from Nix store paths, which would mean that we'd always get the same modification time, even after an upgrade. This is obviously not intended and could possibly distort the site, which is why we've disabled it so far.
We've rolled out a patch which addresses the issue by using the hash portion of the Nix store path as the ETag.
Another quite visible change was introduced for mobile phone/tablet users, where we have changed the navigation/layout a bit to make it less frustrating to browse moonID on smaller resolutions (about time, I'd say).
At the moment the mobile view should be treated more like an interim solution, because it's nowwhere near complete and in some cases quite rudimentary, but we do have a full site re-design on our roadmap where we intend to support mobile targets from the get-go.
If you're playing on a lot of game worlds, navigating the
My Games menu becomes quite tedious to use after a while, because the list is not sorted in a natural order.
In order to make the menu more convenient to use, we now list game worlds under their appropriate game name and they are also sorted naturally (or more accurately: According to a new
rank field in the database table).
So let's say you're playing on a few German MonstersGame and KnightFight worlds, the list was looking like this:
After applying natural sorting, the list now looks like this:
Right now if you want to delete your moonID account, you need to create a ticket and the actual deletion has to be done manually on our side, which is not a very good experience and we think that users should be able to do this for themselves.
However, there are a few things we need to retain by law, for example the purchases made by the user on the account.
While you'll still need to open a support ticket for deleting your account, we now have sufficient tests so that we won't accidentally delete too much information. This allows us to add account deletion within the next few updates.
So far some pages have issued an unnecessary amount of database queries, up to several thousand per request.
We have improved those queries a bit and now almost all pages (only a few internal ones are more demanding) use less than 100 queries. We intend to lower this in future updates, but even getting from a four figure number down to two digits is already a huge improvement.
Unfortunately, a few of the changes come with some fairly complex migrations we need to apply to our database. If everything goes as planned, the downtime will last only for a couple of minutes. If however all hell breaks loose and we need
to revert from database backup, the downtime could be up to an hour.
As usual, we're quite optimistic that everything will go as planned, but in case we're hit by Murphy's law we'd recommend taking a break on Tuesday,
May 21th from 02:00 to 03:00 UTC (that is 4 o'clock to 5 o'clock in German time) if you want to avoid moonID being unavailable.