I am sending AJAX GET-requests to a PHP application and would like to cache the request returns for later use.
Since I am using GET this should be possible because different requests request different URLs (e.g. getHTML.php?page=2 and getHTML.php?page=5).
What headers do I need to declare in the PHP-application to make the clients browser cache the request URL content in a proper way? Do I need to declare anything in the Javascript which handles the AJAX-request (I am using jQuery's $.ajax function which has a cache parameter)?
How would I handle edits which change the content of e.g. getHTML.php?page=2 so that the client doesn't fall back to the cached version? Adding another parameter to the GET request e.g. getHTML.php?page=2&version=2 is not possible because the link to the requested URL is created automatically without any checking (which is preferably the way I want it to be).
How will the browser react when I try to AJAX-request a cached request URL? Will the AJAX-request return success immediately?
Thanks
Willem
Add the following headers on the server:
header("Cache-Control: private, max-age=$seconds");
header("Expires: ".gmdate('r', time()+$seconds));
Where $seconds
has an obvious meaning.
We set an Expires
header here even though it should be ignored if Cache-Control
header with max-age
parameter is set previously because there are clients that do not follow the standard.
Also, check if your server do not issue some other anti-caching headers like Pragma
. If so, add Pragma: cache
header too.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With