I have a code that redirects users to a random post whenever they visit the homepage:

if (have_posts()) {
    while (have_posts()) {

The problem is that it redirects me to the same post whenever I'm not logged in. I suspect W3 Total Cache is the culprit as it puts logged in users in an exception.

However, the problem persisted even though "Cache front page" is unchecked and "index.php" and "*/" is put into the page exception list. I even tried to disable the whole thing, Page Cache, but still nothing.

Finally I tried to disable the Browser Cache and voilá, random posts! But that's not a viable solution and I don't understand how Browser Cache could be causing 'orderby=rand' to return the same posts and not Page Cache.

Any help?

EDIT: It only returns the same post when I reload page through the site (clicking a 'href="/"' link or redirecting to a 'href="/"' link through jquery. But when I reload the page through the browser adressbar it works fine. How?

  • Have you tried to set the status header to 307? wp_redirect($url, 307) – fuxia May 9 '14 at 13:29
  • I did, but didn't change anything. I noticed another thing however that it only returns the same post when I reload the page inside the site (Edited my question). – Tony Fire May 9 '14 at 13:39

Solved this by changing 'Expires header lifetime' on HTML & XML to '1 second'. Not sure if this will decrease performance on other things though.

  • If you're only caching for a single second, seems like you're just wasting server resources, since only a rapidly refreshing visitor would even utilize your cache. – Zade Nov 19 '18 at 10:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.