Enhancing Angular Builds: JS and CSS Versioning Avoid Caching

Angular JS/CSS Version Update and caching issue

Problem Statement

A few days ago, we encountered problems related to the browser cache in our Angular application. We want to find solutions to address this issue so that we don't have to request our customers to perform a manual browser refresh after each deployment. In this post, we will explore potential solutions and strategies to tackle this problem.

Browser caching occasionally leads to issues in displaying updated content following a deployment. Here, we'll explore several typical strategies to address this problem.

  1. Cache Busting

    • You can implement cache-busting techniques to ensure that new versions of your application are loaded by the browser. This can be done by appending a unique version number or a hash to the filenames of your assets (JavaScript, CSS, etc.). This way, when the files change, the URL changes, and the browser will fetch the updated files.
    • Link: Blog - Enhancing Angular Builds: Cache Busting
  2. Service Workers

    • Implementing a service worker can help manage caching. Service workers can be used to cache assets and control how they are served. They enable you to serve the latest version of your application, even when the user is offline or has an outdated version in their cache.
  3. Angular CLI Configuration

    • In your Angular project, you can configure the angular.json file to generate hashed filenames for your production builds. This way, each build will have a unique filename, ensuring that browsers fetch the latest version.
  4. Prompt for Update

    • You can also consider implementing a feature that prompts users to update their browser's cached resources when a new version of the application is deployed. This can be done using a custom update button or an automated notification.
  5. Content Delivery Network (CDN)

    • Utilize a CDN that supports cache purging and versioned asset URLs. CDNs often provide tools to invalidate cached content when updates are made.