Sustainable web best practices checklist
Checklist for helping a website sustainable design & development, mainly from Green It Collective.
| Category | Best Practice | Priority | Weighting |
|---|---|---|---|
| Business logic | Remove non-essential features | 1 | 3 |
| Business logic | Precisely specify the need | 1 | 3 |
| Business logic | Improve the process flow | 1 | 3 |
| Ergonomic | Use input help instead of autocomplete | 1 | 3 |
| Design | Choose a Design that is simple, clear and tailored to the web | 1 | 3 |
| Design | Favor a « mobile first » approach, otherwise use the RESS architecture | 1 | 3 |
| HTML | Allow for quick navigation through the history | 2 | 2 |
| Architecture | Employ asynchronous processing when possible | 1 | 3 |
| Architecture | Limit the number of HTTP requests | 1 | 3 |
| Architecture | Store static data locally | 1 | 3 |
| Architecture | Use a framework or custom build | 2 | 2 |
| Architecture | Use as few plugins as possible | 1 | 3 |
| Architecture | Favor static pages | 2 | 2 |
| Architecture | Create a modular application architecture | 1 | 3 |
| Technology | Choose the most suitable technology | 1 | 3 |
| Technology | Use performance-orientated forks of applications | 1 | 3 |
| Technology | Choose a suitable data format | 1 | 3 |
| Templating | Limit the number of domains hosting the resources | 2 | 2 |
| widget | Replace official social media sharing buttons | 2 | 2 |
| CSS | Generate CSS sprite sheets | 2 | 2 |
| CSS | Split CSS | 1 | 3 |
| CSS | Minimize the number of CSS files and compress them | 1 | 3 |
| CSS | Favor CSS over images | 1 | 3 |
| CSS | Write efficient CSS selectors | 1 | 3 |
| CSS | Group similar CSS declarations | 1 | 3 |
| CSS | Use shortened CSS notations | 1 | 3 |
| CSS | Provide a print style sheet | 1 | 3 |
| CSS | Use conditional comments | 1 | 3 |
| Font | Use standard typefaces | 1 | 3 |
| Font | Favor glyphs over images | 2 | 2 |
| HTML | Check the Web pages with the W3C validator | 2 | 2 |
| HTML | Externalize CSS files and JavaScript | 1 | 3 |
| Image | Delete image tags with empty SRC attributes | 1 | 3 |
| Image | Resize images outside of the browser | 1 | 3 |
| Image | Avoid using bitmap images for the GUI | 1 | 3 |
| Image | Optimize vector images | 1 | 3 |
| Image | Use a lazy load for images | 2 | 2 |
| Ajax / Cache | Use Ajax for content sections that are frequently updated | 3 | 1 |
| CSS / JavaScript | Avoid expensive JavaScript/CSS animations | 1 | 3 |
| CSS / JavaScript | Only use the essential sections of JavaScript and CSS libraries | 1 | 3 |
| DOM | Do not modify the DOM when traversing | 1 | 3 |
| DOM | Make DOM elements invisible during modification | 2 | 2 |
| DOM | Keep repaint (appearance) and reflow (layout) to a minimum | 1 | 3 |
| DOM | Use events delegation | 1 | 3 |
| JavaScript | Modify several CSS properties at once | 1 | 3 |
| JavaScript | Check JavaScript code | 2 | 2 |
| JavaScript | Avoid using try...catch...finally | 3 | 1 |
| JavaScript | Use primitive operations | 3 | 1 |
| JavaScript | Cache objects repeatedly accessed by JavaScript | 1 | 3 |
| JavaScript | Use local variables | 3 | 1 |
| JavaScript | Use anonymous functions | 3 | 1 |
| JavaScript | Use functions instead of strings as the argument of setTimeout() and setInterval() | 1 | 3 |
| JavaScript | Favor a loop over forEach() (or reduce()) | 2 | 2 |
| JavaScript | Keep repaint (appearance) and reflow (layout) to a minimum | 1 | 3 |
| JavaScript | Favor instant visual changes | 2 | 2 |
| Cache | Use a templating engine | 3 | 1 |
| Cache | Use all the CMS' levels of caching | 1 | 3 |
| Documents | Generate PDFs outside of the CMS | 1 | 3 |
| Image | Resize images outside of the CMS | 1 | 3 |
| Sounds | Encode sound outside of the CMS | 1 | 3 |
| Theme | Use a lightweight theme | 1 | 3 |
| Code | Avoid rewriting getter/setter natives | 2 | 2 |
| Code | Do not unnecessarily assign values to variables | 3 | 1 |
| General | Cache frequently-used calculated data | 1 | 3 |
| PHP | Cache the bytecode | 1 | 3 |
| PHP | Use single quotes (') instead of double (“) | 3 | 1 |
| PHP | Replace $i++ with ++$i | 3 | 1 |
| Application Server | Free up the memory of variables that are no longer needed | 1 | 3 |
| Application Server | Do not call a function in the declaration of a for loop | 1 | 3 |
| Application Server | Remove all warnings and notices | 1 | 3 |
| Application Server | Use static variables | 1 | 3 |
| SQL | Avoid running SQL queries inside a loop | 1 | 3 |
| SQL | Only connect to a database if necessary | 1 | 3 |
| SQL | Never write SELECT * FROM | 1 | 3 |
| SQL | Limit the number of results | 1 | 3 |
| SQL | Use stored procedures | 3 | 1 |
| CSS | Minify CSS files | 1 | 3 |
| CSS | Compress CSS and JavaScript libraries | 1 | 3 |
| CSS / JavaScript | Combine CSS and JavaScript files | 1 | 3 |
| Image | Optimize bitmaps | 1 | 3 |
| JavaScript | Minify JavaScript files | 1 | 3 |
| Cookie | Optimize the size of cookies | 3 | 1 |
| HTML | Compress the HTML output | 1 | 3 |
| HTTPS | Favor HSTS Preload list over 301 redirections | 1 | 3 |
| deprovisioning | Set up an end-of-life plan for the site | 2 | 2 |
| Host | Choose a 'green' web host | 1 | 3 |
| Host | Use 'green' electricity | 1 | 3 |
| Host | Adapt the quality of service and the service level agreement | 1 | 3 |
| Servers | Use virtual servers | 3 | 1 |
| Servers | Maximize the energy efficiency of servers | 1 | 3 |
| Servers | Only install essential components on the server | 1 | 3 |
| Servers | Only use in-memory caching | 1 | 3 |
| Servers | Store data in the cloud | 3 | 1 |
| Servers | Use HTTP2 | 1 | 1 |
| Servers | Host CSS and JavaScript resources on a cookieless domain | 1 | 3 |
| General | Avoid redirections | 1 | 3 |
| General | Do not generate 404 pages | 1 | 3 |
| Architecture | Use an asynchronous server | 1 | 3 |
| Cache | Use a CDN | 2 | 2 |
| Cache | Use a reverse proxy | 1 | 3 |
| Cache | Cache the favicon.ico | 1 | 3 |
| Cache | Add Expires or Cache-Control headers | 1 | 3 |
| Optimization | Cache Ajax responses | 3 | 1 |
| Configuration | Disable some web server access logs | 2 | 2 |
| Configuration | Disable Apache's DNS Lookup | 2 | 2 |
| Configuration | Disable Apache's AllowOverride directive | 1 | 3 |
| 3. SGBD/R | Disable MySQL and MariaDB binary logs | 2 | 2 |
| Documents | Compress documents | 1 | 3 |
| Documents | Optimize PDFs | 1 | 3 |
| Remove duplicate email addresses before sending | 1 | 3 | |
| Only use double opt-in email addresses | 1 | 3 | |
| Use plain text instead of HTML | 1 | 3 | |
| Sons | Adapt sounds to the listening environment | 1 | 3 |
| Texts | Adapt text for the Web | 2 | 2 |
| Videos | Adapt videos to the viewing environment | 1 | 3 |
| Animations | Limit the usage of flash | 2 | 2 |