2009-12-27 60 views
7

只要好奇,Google Maps API v3 javascript是否可以缓存在本地服务器上?Google Maps API JavaScript可以缓存吗?

因为有时我的内网网页由于网速较慢而加载缓慢。否则,它会从本地服务器加载文件,并且仅在发出映射请求时才放慢速度。

我甚至准备好运行cron作业来更新javascript文件一段时间。

感谢您的任何意见。

回答

13

这是不可能的“原样”。

当您向Google请求脚本时,他们沿脚本发送标题,这些标题包含“no-cache”指令。

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

这样你就可以控制HTTP头和缓存。您可以缓存脚本内容以减少与Google的关联。

我不会建议有人在生产或任务关键网站上做这件事。所有的Google API都经常更新,并且或多或少地绑定在一起。如果某件事与别的东西不同步,那么你很难追踪你手上的错误。

希望有所帮助。

编辑:我听说你把你的脚本放在文档的HEAD部分。也许这会伤害你“感知”的页面加载时间。尝试在页面的标记和onload事件中的映射初始化之前移动脚本的下载。

迈克

+0

谢谢你的解释,你是正确的,谷歌几乎每周都更新的API。我不认为在这个角度来看。 – Nirmal 2009-12-27 06:17:29

+4

不客气..第3版API更紧凑,比V2快,所以我不会担心。相反,你应该看看你如何初始化你的东西,就像我说的,见http://developer.yahoo.com/performance/rules.html特别是部分“在底部放置脚本”。 – 2009-12-27 06:37:15

+0

+1了增加了帮助。雅虎的这个链接真的很有用。我没有考虑很多性能问题,因为这些页面严格在Intranet中。但现在我觉得我应该认真考虑最佳实践,因为我们的组织处于分散到多个地理位置的边缘。没有微调,我真的会陷入麻烦。再次感谢。 – Nirmal 2009-12-28 03:37:12

3

恕我直言,你不能缓存它。 API脚本在Google服务器上调用对象。至多,您可以捕获结果并将它们缓存为图像(但之后会失去交互性)。

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

如果你想离线地图,你必须做非交互式图像,或购买地图服务器。

+0

地图服务器!我会很喜欢,但不是我们的财务部门:(我不是在寻找缓存的结果。在GMAP是那些获得在''装载部分的JavaScript函数是什么将全部的时间。如果我能缓存所取得的.js文件,我可以代替从本地服务器调用它。但是,地理编码或地图的请求可以直接从谷歌进行。 所有我看到的是,是否会有对这样产生任何影响。 – Nirmal 2009-12-27 05:47:53

0

,不会让你违反了谷歌的服务条款将维持OpenStreetMap的瓷砖用的OpenLayers脚本的本地缓存中观看他们的选项。基本上,使用免费数据来创建您自己的地图服务器。

如果有一些对您的Intranet非常重要的特殊兴趣点,您可以确保它们位于OpenStreetMap中,并使用您所需的功能自行设置渲染服务器。毕竟,将某个学区覆盖在某个区域内的每个学校将需要更多的工作,然后只显示其中的学校制作的PNG。

如果您的地图服务器在周末期间获取/生成贴图,而不是始终击中Google地图API,那么在外部连接速度缓慢的情况下,延迟也会大大减少。

4

截至2016年,JS返回与“缓存控制:公众,最大年龄= 1800”头,所以它被缓存至少一个半小时。

相关问题