为什么我必须使用此Javascript刷新页面?

时间:2012-03-18 04:15:10

标签: javascript ajax

<script 
    type="text/javascript" 
    src="http://gdata.youtube.com/feeds/api/videos?q= Nas&max-results=8&orderby=relevance&alt=json-in-script&format=5&callback=showMyVideos2">
</script>

当我更改搜索查询时,我必须刷新页面才能看到它。这是为什么?我需要AJAX吗?为什么呢?

由于

1 个答案:

答案 0 :(得分:0)

这里只是一个疯狂的猜测:您说如果结果发生变化但您重新加载加载脚本文件的页面,则它们不会立即更改(立即)。这是预期的,因为浏览器可以缓存脚本文件。强制刷新可能会强制重新加载脚本文件,因此问题就会消失。

查看响应标头输出(例如使用http://web-sniffer.net/之类的内容)并注意从服务返回的脚本文件的缓存策略指定最大年龄为300秒:

Cache-Control: private, max-age=300, no-transform

如果您确实需要即时更新而不是每5分钟一次并且您的页面是由服务器端应用程序生成的,那么您可以通过在脚本URL的末尾添加一些不重要的数据来解决此问题(例如,随机数)或者GUID)因此每个URL都是唯一的,不会从浏览器缓存中加载。看起来服务允许这样:

http://gdata.youtube.com/feeds/api/videos?q= Nas&amp; max-results = 8&amp; orderby = relevant&amp; alt = json-in-script&amp; format = 5&amp; callback = showMyVideos2&amp; 987654321

http://gdata.youtube.com/feeds/api/videos?q= Nas&amp; max-results = 8&amp; orderby = relevant&amp; alt = json-in-script&amp; format = 5&amp; callback = showMyVideos2&amp; 123456789

注意每个URL末尾的额外参数,但两者似乎都成功返回相同的内容。