Use configuration as cacheable dependencies in drupal 8 & 9
Cacheable dependencies got introduced in drupal 8 and provides great power over your caching. I recently found out that you can add "cacheable dependencies" to your render arrays like in the snippet below.
It will only get cleared if the configuration changes. That's quite a great win, actually!
public function build() {
$config = \Drupal::config('system.site');
$build = [
'#markup' => $config->get('name'),
];
$renderer = \Drupal::service('renderer');
$renderer->addCacheableDependency($build, $config);
return $build;
}