Low impact 🌿

Use error pages and redirects carefully

Navigation errors lead to mistakes, which lead to visitors wasting time trying to resolve them, or abandoning a website altogether. Anything that can be done to interject, predict, and way-find around potential problems will reduce emissions over time.

Actions checklist
  • Error Pages

    Maintain sites by ensuring links are correct, and if errors occur, provide suitable way-finding within optimized pages for each error type to ensure resources can be identified to help a visitor complete the task they started.

  • Redirection

    Redirect websites, subdomains, and pages only when necessary. Proactively seek broken or outdated links and fix them. A redirect or search will often help reduce the number of pages a visitor needs to load.

☞ See on W3C

🦾

Medium impact 🌿

Limit usage of additional environments

Decommission or switch off additional environments, such as testing / Quality Assurance QA) / re-production and other such environments when they are not useful.

Actions checklist
  • Unused Environments

    Ensure no unused environment is available, balancing the cost of deploying an environment with the cost of keeping it online while unused.

☞ See on W3C

🦾

High impact 🌿

Automate to fit the needs

Any tasks, especially repetitive, that can be automated should be automated (compilation, deployment, tests, etc.) to reduce time at the computer being wasted by people.

Actions checklist
  • Automate Tasks

    Every recurring task, such as deployment, testing, or compilation, can be run automatically, as is recommended by continuous integration / continuous delivery best practices.

  • Necessitate Tasks

    To reduce wasted processing cycles, every automated task is only run when needed.

  • Automated Scaling

    Use automated scaling infrastructure to automatically increase the capacity of the web server and implement buffering / throttling to respond to visitor demand.

  • Security Tooling

    Web browsing from bots has been steadily increasing in recent years. As such, it is a growing concern for security, performance, and sustainability. Use security tools that automatically block bad actors and minimize bad behavior. This results in substantially less load on the server, fewer logs, less data, less effect due to compromise, and more. The result of compromised websites is a large increase in HTTP, email, and other traffic as malicious code attempts to infiltrate other resources and exfiltrate data. Compromised websites are typically identified by anomalous patterned behavior.

☞ See on W3C

🦾🦾

Medium impact 🌿

Maintain a relevant refresh frequency

Only send data from the server when the visitor needs it. As much as possible, you can rely on client-side or server-side cache and client-side / local storage. Rather than refreshing data on a given frequency, it might be up to the visitor to manually ask for a refresh.

Actions checklist
  • Refresh Frequency

    The frequency for refresh (of both the cache, locally stored data, and the page) is defined depending on visitor needs.

☞ See on W3C

🦾

Low impact 🌿

Be mindful of duplicate data

For security reasons and in accordance with an Service-Level Agreement (SLA), it is often recommended to duplicate data to make sure it remains available if a problem occurs. This should be balanced with the cost of such duplication. Not all data is critical and, rather than overcompensating with multiple saves, duplication should be designed with efficiency in mind.

Actions checklist
  • Data Backups

    Backups of system and user data are both incremental and secure.

☞ See on W3C

🦾

Medium impact 🌿

Enable asynchronous processing and communication

Depending on carbon-intensity, some processes and communications should be delayed and sometimes batched. This could also be a way to reduce the workload on a server or Virtual Machine (VM). In such cases, visitors should be warned that the process is asynchronous and notified when it is over.

Actions checklist
  • Batch Processing

    By default, non-critical processes and communications are batched and launched only when carbon-intensity is under a given threshold.

  • Protocol Usage

    Ensure the communication protocols are relevant to the visitor's needs and data transferred. Avoid using insecure protocols (HTTP, FTP), and prioritize more efficient and privacy-aware data routes for visitors (HTTPS, SSH).

☞ See on W3C

🦾🦾

Medium impact 🌿

Consider cdns and edge caching

Edge caching and CDN delivery can help optimize sustainable delivery of digital services by optimizing the way in which your websites traffic is transferred over the internet.

Actions checklist
  • Local Servers

    Choose a hosting provider with servers located close to the visitor.

  • Content Delivery Network's (CDNs)

    When building for a globally distributed audience, use a CDN to store and serve simple read-only, pre-generated resources in a fast and efficient manner. Although they definitely can increase performance, it is also another layer of infrastructure which needs to be considered for sustainability.

  • Sustainability Commitment

    Check the CDN to verify that it provides a commitment to sustainability.

  • Avoid Caching Inappropriate Resources

    Avoid using the service to host dynamic resources or JavaScript (unless through a first-party host) as due to cache partitioning, cross-origin resource sharing (CORS), and other browser mechanics, any benefits are negated by weaker performance, the inability to cache or interact, and the potential introduction of security and privacy issues to be introduced. This doesn't affect JSON or other static assets.

☞ See on W3C

🦾

Medium impact 🌿

Use the lowest infrastructure tier meeting business requirements

Select infrastructure with minimal specifications meeting business requirements of performance, availability, etc.

Actions checklist
  • Lowest Requirements

    Select infrastructure elements with the lowest requirements tier, meeting your service-level agreements. Avoid over-provisioning multi-datacenter, multi-zone, or distributed deployments if standalone instances meet the requirements. Also avoid provisioning infrastructure that will be under-utilized by provisioning for established average loads, ensuring reasonable resource utilization and autoscaling occurs as needed. Avoid provisioning for peak loads.

☞ See on W3C

🦾🦾