1

我有一些代码每24小时产生一个新的KMZ文件(每个旅程有很多点,需要大约18个小时才能完成)。而且我有一个带Google地球插件的网页,可自动加载并运行旅程(称为latest.kmz)。每24小时不同的Google地球之旅(无人)

现在我试图在浏览器(Chrome)指向我的网站的大堂中设置一台无人计算机。每天早上,例如上午8点,我希望网页刷新并开始新的旅程。

不幸的是,即使我在夜间覆盖latest.kmz,当页面刷新时(使用http:// ... etc ...“>),它仍然继续使用latest.kmz的缓存版本。

我怎样才能迫使它从磁盘重新加载最新版本的KMZ的?

回答

0

部队缓存使用内容标题,如果你不这样做已经没有验证,这可以通过射击您的KMZ文件来实现与下列标题:

Cache-Control: max-age=0, must-revalidate 

这将强制useragent立即考虑文件陈旧,这意味着在下一个请求时,它不会使用它的缓存。为了以防万一,请检查当前的头文件,因为您可能已经在头文件中包含了某些内容,并进行相应调整

0

有两种方法,您可以简单地将时间戳或随机查询字符串附加到KMZ请求url。这基本上使得对数据的每个请求都是唯一的,从而避免了任何缓存问题。

例如,您可以创建URL到您的KMZ并追加一个UNIX时间戳,如下所示。

var kmz = "http://localhost/your.kmz?x=" + (new Date()).getTime(); 

产生这样的独特结果。

http://localhost/your.kmz?x=1365635454757 
http://localhost/your.kmz?x=1365635478881 

另一种方法是使用NetworkLink一起装入您的KMZ文件(如果你不这样做的话)这种方式,您可以控制什么时候检查新数据再次避免缓存问题。通过这种方式,页面根本不需要刷新 - 通过将refresh interval设置为重新加载文件之前的秒数,可以在kml文件中指向数据的简单网络链接工作。

有点像。

<?xml version="1.0" encoding="UTF-8"?> 
<kml xmlns="http://www.opengis.net/kml/2.2"> 
    <NetworkLink> 
    <name>your file</name> 
    <flyToView>1</flyToView> 
    <Link> 
     <href>http://localhost/your.kmz</href> 
     <refreshMode>onInterval</refreshMode> 
     <refreshInterval>86400</refreshInterval><!-- 24 hours --> 
    </Link> 
    </NetworkLink> 
</kml>