一段时间以来,我一直在努力寻找一种方法来缓存我的 ajax 数据,最后我找到了,但它有点太远了,请参阅我的标题...
我只使用一个名为“test.php”的 PHP 文件,其中包含一些 html 和 jquery。
省略了一些代码,因为最重要的部分是那三个header('...')。
你不能错过任何一个,否则ajax数据将不会被缓存,但是一旦你得到它们,即使使用Ctrl+也不会刷新ajax数据,F5除非清除浏览器的缓存。
我不想失去缓存的好处,但是当数据库更新 ajax 请求仍然得到 304(未修改)。至少在Ctrl+之后F5,让我得到 200(OK)的响应。
<?php
...
$test = $_GET['test'];
$query = "select * from `xx` where id = '$test'";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
$str .= $row['name'];
}
//I want ajax data to be cached for only one hour
$cache_time = gmdate('D, d M Y H:i:s',strtotime('+1 hour')).' GMT';
header('Cache-Control:must-revalidation');
header('Expires:'.$cache_time);
header('Pragma:cache');
exit($str);
?>
<!DOCTYPE HTML>
<html>
<body>
...
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function(){
$('li').live('click',function(){
$.ajax({
type:"GET",
data:'test=' + test,
dataType:"text",
url:"test.php",
success:function(text){
alert(text);
}
});
});
});
</script>
</body>
</html>