Jens Oliver Meiert

Website Optimization Measures, Part XXXII

Published on Jun 25, 2025, filed under , (feed). (Share this on Mastodon or Bluesky?)

Hello to edition 32 of that series in which I share improvements and lessons from the work on my projects, allowing you to choose what may benefit yours:

  1. Axing custom “Internal Server Error” pages. For ages I set up error pages for internal server errors (500). At some point I finally realized that these pages would never show—or, even if, not show correctly. After a quick search checking on this sentiment, I removed all custom pages I had set up for these errors.

    One thing I kept, however—“standalone,” “inline” directives for these errors, that is, like the ones I shared in WOM XXX.

  2. Refactoring .eleventy.js configs. I reviewed all my Eleventy projects’ configurations. Apart from reordering filters and collections, one larger benefit fell out of this optimization measure: I noticed that I used and needed the Eleventy RSS plugin only for its built-in absoluteUrl filter. I replaced it by a homemade filter:

    // Replace `absoluteUrl` formerly provided by RSS plugin
     eleventyConfig.addFilter('absoluteUrl', (url, base) => {
      return new URL(url, base).href;
    });
    
  3. Tightening CSPs (and onboarding external assets). Over the years, I had whitelisted several domains in one of my projects’ CSP. This I started to dislike so much that I searched for any such references, moved the respective assets (like images) to the respective domain (to host them from its CDN), and took that to remove exceptions from the content security policy. In other words—I moved to hotlinking and whitelisting less.

  4. Removing ls=1 parameters from Apple store links. These launch the respective apps, and while I liked this in the past, I don’t do so anymore. (Besides, stripping them allowed me to remove the quotes around the links 🙂)

  5. Trying to improve Eleventy passthroughs. Passthroughs in Eleventy seem slow (even blocking?) to me. On meiert.com, I have particularly large folders to pass through, with the German version and images being two of them. I’ve hooked up rsync commands as Node scripts not to have Eleventy handle these folders… and I’m monitoring.

  6. Performing extra link checks. That most boring of important tasks again. I routinely run link checks over my projects, but after the meiert.com migration, which—with content originally stored in a database—had many links in its wake that could never easily checked and updated, more checks were needed. With the English part of meiert.com now using Markdown, I handled this using markdown-link-check.

  7. Ensuring alphabetical sorting of CSPs. I’m a fan of alphabetical sorting because it’s easy for humans and machines. (I also sort CSS declarations alphabetically and recommend to do the same.) On adjusting one policy I noticed that most shockingly, frame-ancestors directives were not properly sorted. Adjusted, changed,—optimized! 😆

  8. Starting to take action on links to organizations directly and indirectly tied to wars, genocides, misanthropy. With a clearer personal policy in place, part of my latest maintenance work has meant to remove attributions and switch to “archived” links of parties that are based in countries engaging in wars, genocide, or misanthropy. Your and my country might not do enough against such crimes—let’s do more individually then. Everything helps.

This is a part of an open article series. Check out some of the other optimization posts!

About Me

Jens Oliver Meiert, on November 9, 2024.

I’m Jens (long: Jens Oliver Meiert), and I’m a web developer, manager, and author. I’ve been working as a technical lead and engineering manager for companies you’ve never heard of and companies you use every day, I’m an occasional contributor to web standards (like HTML, CSS, WCAG), and I write and review books for O’Reilly and Frontend Dogma.

I love trying things, not only in web development and engineering management, but also in other areas like philosophy. Here on meiert.com I share some of my experiences and views. (I value you being critical, interpreting charitably, and giving feedback.)