Drupal has a great piece of functionality for themer's to force browsers to reload css and javascript. However, this same courtesy is not extended to the favicon and the logo image. You cannot overwrite the default "logo.png" or "favicon.ico" files in your theme and push them to production, expecting the site to magically be able to display the updated files. Browsers that have already visited the site will pull these files from their cache.
The only way to ensure all browsers get a new version of these files is via the administrative Appearance Drupal UI and specifying a path to a different logo file (or upload a file with a different name) and the same goes for the favicon.
My proposal would be to use the css_js_query_string variable to the logo and favicon URLs generated in theme_get_setting(). I've tried and was unable to find a clean way to alter the data returned from theme_get_setting() in order to add the query string from a custom module or theme, which is a separate issue altogether.
One could argue that these files shouldn't change that often after launch, but this is causing us trouble even *before* the launch of a project.
Technically, this could be seen as a new feature request for Drupal 9, but I'll stray out on a limb and file it as a bug report for D8, not to annoy, but in the sincere hopes that this small and useful fix might actually eventually make it into Drupal 7!
Patch to follow in first comment...