Art Game-强制取消对JSON调用进行缓存

时间:2019-05-31 10:17:49

标签: php json

我为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+'">');            

        });
    }
);

1 个答案:

答案 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 });
});