The latest version contains a critical Bug that came with the latest plugin security update.
Cache files now get the string <?php /*
appended on cache write, so that the files’ contents can’t be displayed by simply viewing them in the browser.
The plugin’s authors simply fail to take the offset into consideration when reading cache files. This results in failed deserialization of the files’ contents and cache misses on every cache read.
If you want to look into the issue, it is located in the File /wp-contents/plugins/w3-total-cache/lib/W3/Cache/File.php in Line 279. Note that the expire value is read from the first four bytes of the file. Since the update the first four bytes are just “<?ph”.
You can either wait for a fix by the authors or fix it yourself by adding @fseek($fp, strlen("<?php /* "));
to Line 279 before $expires = @fread($fp, 4);
.
If you decide to add the mentioned changes, please note, that you do this at your own risk. I recommend switching from file/disc based caching engines to other available engines. Or wait until the issue is resolved.
I have already notified the plugin’s author and still waiting for a response.