しばらくの間、自分の ajax データをキャッシュする方法を見つけようと懸命に努力しましたが、ついに見つけましたが、少し遠すぎます。私のタイトルを参照してください...
「test.php」という名前の PHP ファイルを 1 つだけ使用し、その中にいくつかの html と jquery を使用します。
最も重要な部分は 3 つのheader('...')であるため、一部のコードは省略されています。
そうしないと ajax データはキャッシュされませんが、それらをすべて取得すると、ブラウザーのキャッシュをクリアしない限り、 Ctrl+を指定しても ajax データはフラッシュされません。F5
キャッシュの利点を失いたくはありませんが、データベースが更新された ajax リクエストで 304(NOT MODIFIED) が返されます。少なくとも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>