Is there any way to have an individual node's cache flushed if it gets updated? (instead of having to flush drupal's entire cache to show the changes to anonymous users immediately? (Rules or a module maybe?)
I believe Views Custom Cache module could be your solution.
Install "Views Custom Cache" module as usual.
Your first argument is Node ID.
Add second argument Custom Global: NULL argument - which is ignored and will not efect the view in any particular way - exept caching!
Ensure that this argument is not present when view is generated so that "When the filter value is NOT available" rule will be triggered.
If your view has path for example "
nid is available to you as
arg() value (0, 1, 2...) to match your use case in code snippet below.
In Global Null argument: When the filter value is NOT available / Provide default value / PHP code enter:
$node = node_load(arg(1)); return $node->changed;
Now your second argument (Global Null argument) will always return fresh node updated date (timestamp), and you can use "Custom cache: view's all arguments" cashe option.
Global Null argument will be nicely ignored and will not take any efect on view rendering, but it will make effect on cache - making it unique for specified Node ID + Node updated date pair. If node is updated, new Node updated date (timestamp) will be returned as second argument to the view which will cause automatic View cache refresh for specified Node ID.
Answer reference: https://www.drupal.org/node/2559607#comment-10436015