I have a one form, and I’m inserting it on page footer from a function file. I need to display a random form to each visitors and thus have a function developed to support this. However, with caching enabled the randomness doesn’t work.
I’m using W3 Total Cache Plugin for caching.
So here, I need to exclude certain section of code from caching.
I tried to put the function inside Fragment Caching which should do the trick, but it doesn’t.
We need to pass a random integer from a given array and based on that it loads random form in the footer.
Here is a code snippet for you to review:
<!--MFUNC {E7C5F12EBCDA5F83A41BF33D778ED} -->
<?php
//echo rand();
$surveyforms=array("10","11");
$ra=$surveyforms[array_rand($surveyforms)];
echo($ra);
?>
<!--/mfunc {E7C5F12EBCDA5F83A41BF33D778ED} -->
Just
This should print a random number from an array collection given every time a page is refreshed, however due to cache the result. If we disable caching then it works fine, however as you know caching is very important for performance so we can not disable it.
The same code also moved to the footer.php but doesn’t work there as well.
Any idea, how to use fragment caching on function file? I am fine with any other idea that works.
Looking forward to your response.
Thanks
From the source:
Here (source) is the
mfunc
part in the 0.9.2.9 version of the W3TC plugin where the regular expression is:From this it looks like the setup should be
The
mfunc
callback isso we can see that it uses
eval()
on thecode2
part if thecode1
part isn’t set. Checking the PHP manual for this function:http://php.net/manual/en/function.eval.php
it says:
Examples:
So I would think that a working example, where you have
would look like this (untested) :
The
code1
case:or the
code2
case: