Send some relevant HTTP headers.
E.g.:
$HTTPtimeformat='%a, %d %b %Y %H:%M:%S GMT';
$nextday=time() + 606024;
header('Cache-Control: public');
header('Expires: '.gmstrftime($HTTPtimeformat,$nextday));
This may be refined by adding an ETag header which holds some value which is always the same if the URL hasn't changed, but is never the same if the URL did change.
Note that it seems hard to force Netscape for cache PHP content, for some strange reason.