for example
<script type="text/javascript" src="assets/scripts/somescript.php"></script>
will my browser still cache this just by not setting this scripts headers meta tag cache to must-revalidate?
views:
404answers:
3If you send a Content-type: text/javascript; charset="your_charset"
the browser will recognize your PHP script as a valid Javascript resource and will handle it like any other Javascript. You can control browser caching behavior by issuing the correct headers in your PHP script using header()
.
Some browsers are more agressive with default caching than others. However, there are cache control headers you can send to indicate when to reload the code.
header("Expires: " . date("r", time() + ( 60 * 60 * 24 * 7 * 1 ) ) ); // Expires in 1 week
header("Content-Type: application/x-javascript");
Is a code-snippet I've been known to use.
You can use more fancy stuff like If-Not-Modified headers and ETags, but Expire times are the only ones that eliminate extra server calls.
One trick is to write your script tag out with an ever-changing querystring on it. Your main PHP could write out the following, which changes each day:
<script type="text/javascript" src="assets/scripts/somescript.php?date=20081118"></script>
The querystring will be ignored by somescript.php, but the browser will treat the URL as a new one each time, and reload the script.