2012-12-14 28 views
3

https://gdata.youtube.com/feeds/api/users/EXAMPLE/uploads?v=2&alt=jsonc的file_get_contents(“YOUTUBE API”)缓存/回报未更新/旧信息

当访问这个URL从浏览器直接,它会返回正确数据的时间100%。如果视频已添加,则视频已删除,视频已删除。

通过file_get_contents('https://gdata.youtube.com/feeds/api/users/EXAMPLE/uploads?v=2 & alt = jsonc')获取此数据时;

的数据似乎被缓存或不更新/电流数据...

如果继续刷新页面,它会显示/隐藏新视频,以及显示/隐藏删除的视频约5 10分钟,那将是准确的。

同样的事情,当我使用$ .getJSON(),或$。阿贾克斯()数据恰好...

不该数据相同的浏览器访问URL时为?

我只是试图获取用户上传的最新视频“示例”。

public function ajaxUpdateVideoFeed() 
{ 
     header("Content-type: application/json"); 
     $json = file_get_contents('https://gdata.youtube.com/feeds/api/users/EXAMPLE/uploads?v=2&alt=jsonc'); 
     $data = json_decode($json, TRUE); 
     $videoId = $data['data']['items'][0]['id']; 
     echo json_encode($videoId);die(); 
} 

回答

0

尝试追加一个随机数到你的网址调用结束。 https://gdata.youtube.com/feeds/api/users/EXAMPLE/uploads?v=2&alt=jsonc&r=RAND其中RAND会在每次调用url时产生一些随机生成的随机数。不知道这是否适合你,但可能值得一试。

+0

大通,我试着添加一个rand(),到url调用的结尾,它没有解决问题。谢谢回复。 – user1905188

0

我有类似的问题。我试图通过$ .ajax()调用检索特定视频的当前状态,并且响应数据似乎保持缓存。如果我尝试浏览器的网址,数据会更新。

$.ajax({ 
    url: 'https://gdata.youtube.com/feeds/api/videos/YouTubeID?v=2&alt=json' 
    type: "post", 
    dataType: 'json', 
    cache: false, 
    success: function(response, textStatus, jqXHR){ 
     var ytState = response.entry.app$control.yt$state.name; 
    }, 
    error: function(jqXHR, textStatus, errorThrown){ 
     console.log("The following error occured: "+ textStatus + errorThrown); 
    }, 
    complete: function(){ 
    } 
}); 

我试图JSON,JSONP,缓存=假,附加一个时间戳,附加我的开发关键URL,并没有成功。

* *编辑

通过使用POST VS得到我的Ajax请求似乎消除了我类似的缓存问题。

编辑编辑

没关系,我吸。使用POST会产生400错误。

+0

嘿!,我已经尝试了所有这些事情......没有运气。 – user1905188

+0

太奇怪了。我尝试了使用PHP和file_get_contents()的方法,并认为我已经工作,但缓存问题仍然间歇性弹出。 –