我为Yu-Gi-Oh创建了一个“猜卡片艺术”游戏! here。
基本上,它调用我的php API,每次都会获得一张随机卡。
API调用:https://db.ygoprodeck.com/api/v4/artgame.php?format=speed
通过JSON调用该API以显示卡。第一次JSON调用是选择格式时。它将显示一张卡片,您可以猜测。正确/错误/跳过会激活下一个JSON调用,从而调出下一张卡片。
有时,该卡在首次通话和随后的第一个通话中都将保持不变,就好像该电话已被缓存一样。 只有在第一次和随后的呼叫中才会发生,但不会每次都发生,通常是在我清除缓存并重试之后。
我在 PHP API文件顶部使用了这些缓存控制方法:
header("Access-Control-Allow-Origin: *");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
我的JSON呼叫:
var url = "https://db.ygoprodeck.com/api/v4/artgame.php"+difficultyformat;
//Get Card Data
jQuery.getJSON(url,
function(data) {
jQuery.each(data, function (i, val) {
jQuery('.imgholder').append('<img src="'+val[0].image_url+'">');
});
}
);
答案 0 :(得分:0)
愚蠢的我。我没意识到getJSON
内置了缓存。
我更改了此内容
//Get Card Data
jQuery.getJSON(url,
function(data) {
jQuery.each(data, function (i, val) {
jQuery('.imgholder').append('<img src="'+val[0].image_url+'">');
});
}
);
为此:
var url = "https://db.ygoprodeck.com/api/v4/artgame.php"+difficultyformat;
//Get Card Data
jQuery.ajax({
cache: false,
url: url,
dataType: "json",
success: function(data) {
jQuery.each(data, function (i, val) {
jQuery('.imgholder').append('<img src="'+val[0].image_url+'">');
});
}
});
您还可以使用以下命令,但它会全局禁用我绝对不希望的缓存:
jQuery(document).ready(function() {
jQuery.ajaxSetup({ cache: false });
});