Can you confirm you are using the [ContentOutputCache] attribute on your controller?
Have you tried removing all your custom code to check things still work as expected in your custom attribute? Also have you tried using the default [ContentOutputCache] attribute? Finally I assume you are testing this on your local machine so do not have any load balancing confuguration to think about.
Shouldn't the ContentOutputCache clear the output cache of the page each time the page is published? I am working on CMS verison 11.20.5 and upon publishing the page, I dont see the outputcache being purged for that page.
Below is a small tweak I made to disable/enable the output cache via CMS.
I then decorate the controller with this attribute, the caching is working fine. But the cache doesnt seem to be getting cleared when I publish the page.