【问题标题】:Can the Google Maps API javascript be cached?可以缓存 Google Maps API javascript 吗?
【发布时间】:2010-12-30 05:31:51
【问题描述】:

只是好奇,Google Maps API v3 javascript 是否会缓存在本地服务器上?

因为,有时我的 Intranet 页面加载速度很慢,因为 Internet 连接速度较慢。否则,它会从本地服务器加载文件,并且只有在发出地图请求时才会减速。

我什至准备运行一个 cron 作业以不时更新 javascript 文件。

感谢您的任何意见。

【问题讨论】:

    标签: javascript google-maps-api-2


    【解决方案1】:

    “按原样”是不可能的。

    当您向 Google 请求脚本时,他们会随脚本发送标头,并且这些标头包含“no-cache”指令。

    因此,如果您希望它们可缓存,则必须创建代理。您无需将脚本 src 指向 Google,而是将其指向您的服务器。然后,您的服务器调用 Google 并将响应发送回客户端。

    这样您就可以控制 HTTP 标头和缓存。您也可以对脚本内容进行缓存,以减少与 Google 的连接。

    我不建议有人在生产或关键任务网站上这样做。所有 Google API 都会经常更新,并且或多或少地绑定在一起。如果某些内容与其他内容不同步,那么您手上的 bug 就很难追踪。

    希望对您有所帮助。

    编辑:我听说您将脚本放在文档的HEAD 部分。也许那会损害您的“感知”页面加载时间。尝试将脚本的下载移动到页面的</body> 标记和地图初始化之前的onload 事件页面。

    迈克

    【讨论】:

    • 感谢您的解释。您说得对,Google 几乎每周都会更新 API。我没有从这个角度思考。
    • 不客气。v3 API 比 v2 更紧凑、更快,所以我不用担心。相反,你应该看看你是如何初始化你的东西的,就像我说的那样。请参阅developer.yahoo.com/performance/rules.html,尤其是“将脚本放在底部”部分。
    • +1 以获得额外的帮助。雅虎的那个链接真的很有用。我没有考虑太多性能问题,因为这些页面严格位于 Intranet 中。但现在我觉得我应该认真考虑最佳实践,因为我们的组织正处于分散到多个地理位置的边缘。如果没有微调,我真的会遇到麻烦。再次感谢。
    • 将脚本从 加载到 提高了加载性能!!谢谢
    【解决方案2】:

    截至2016年,返回的js带有“Cache-Control: public, max-age=1800”标头,所以至少缓存了半个小时。

    【讨论】:

      【解决方案3】:

      恕我直言,您无法缓存它。 API 脚本调用 Google 服务器上的对象。最多,您可以捕获结果并将它们缓存为图像(但随后您将失去交互性)。

      如果可以缓存 GMap 结果,人们只会在本地缓存 Google 的整个数据库,我认为这不是用户协议的一部分;)。

      如果您想要离线地图,则必须使用非交互式图像,或者购买地图服务器。

      【讨论】:

      • 地图服务器!我想要一个,但不是我们的财务部门 :( 我不想缓存结果。在<head> 部分加载的 Gmap javascript 函数会占用整个时间。如果我可以缓存获取的 .js 文件,我可以从本地服务器调用它。但是地理编码或地图请求可以直接从谷歌发出。我只看这样做是否会产生任何影响。
      【解决方案4】:

      一个不会让您违反 Google 服务条款的选项是使用 OpenLayers 脚本保留 OpenStreetMap 切片的本地缓存以供查看它们。基本上,使用免费数据创建您自己的地图服务器。

      如果有对您的 Intranet 很重要的特定兴趣点,您可以确保它们位于 OpenStreetMap 中,并自行设置具有您需要的功能的渲染服务器。毕竟,将一个地区的每所学校覆盖在一些 png 上将需要更多的工作,而不是仅仅显示由其中的学校制作的 png。

      如果您的地图服务器在周末获取/生成图块,而不是一直使用 Google Map API,那么在慢速外部连接上的延迟也会大大减少。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-26
        • 1970-01-01
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-31
        • 1970-01-01
        • 2011-03-17
        相关资源
        最近更新 更多