1

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

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

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

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

4

2 回答 2

0

如果您还没有这样做,请使用内容标头强制缓存不验证。这可以通过使用以下标头触发您的 KMZ 文件来实现:

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

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

于 2013-04-10T20:44:03.227 回答
0

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

例如,您可以创建 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 文件,这样您就可以准确控制何时再次检查新数据,从而避免缓存问题。这样,页面根本不需要刷新 - 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>
于 2013-04-10T23:28:14.123 回答