每24小时一次不同的Google地球之旅(无人值守)

时间:2013-04-10 20:36:44

标签: javascript google-chrome google-earth-plugin page-refresh browser-refresh

我有一些代码每24小时生成一个新的KMZ文件(每个游览有很多点,大约需要18个小时才能完成)。我有一个带有Google地球插件的网页,可自动加载并运行游览(名为latest.kmz)。

现在我正试图在大厅设置无人电脑,浏览器(Chrome)指向我的网站。每天早上,例如早上8点我希望网页刷新并开始新的巡演。

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

如何强制它从磁盘重新加载最新版本的kmz?

2 个答案:

答案 0 :(得分:0)

如果您尚未使用内容标头强制缓存无验证。这可以通过使用以下标题触发KMZ文件来实现:

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

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

答案 1 :(得分:0)

有两种方法,您只需将时间戳或随机查询字符串附加到KMZ请求网址即可。这实质上使得每个数据请求都是唯一的,从而避免了任何缓存问题。

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

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

制作像这样的独特结果。

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

另一种方法是使用网络链接加载您的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>