具有远程脚本的Django-Compressor(Google Maps API)

时间:2013-01-06 07:26:12

标签: javascript django django-compressor

出于性能原因,我正在尝试将django-compressor集成到现有的django项目中。

我在我的根模板中的块周围添加了{% compress css %}{% compress js %}标记,其中所有JS和CSS脚本都包含在子模板中(即,网站上的所有其他页面都扩展了这些块)用于放置页面特定文件的根模板)。这在大多数情况下都是完美的,但是一个页面有一个带有JS标题的嵌入式Google Map:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=weather&key={% include "google_maps_api_key" %}&sensor=false">

这会在呈现页面时触发异常:

Caught UncompressableFileError while rendering: 'http://maps.googleapis.com/maps/api/js?libraries=weather&key=MYAPIKEY&sensor=false' isn't accessible via COMPRESS_URL ('/media/') and can't be compressed

有没有办法告诉django-compressor跳过这个脚本?有没有办法让它访问和压缩远程脚本?

2 个答案:

答案 0 :(得分:0)

不,AFAIK这是不可能的(没有严重修改django-compressor)。根据您的描述,最佳解决方案是为本地可压缩脚本和远程脚本提供单独的块,并让您的子模板适当地使用这些块。

答案 1 :(得分:0)

技术上可行吗?是的...您可以将地图下载到您的资产文件夹,然后从那里压缩。

但是,这违反了Google的使用条款,可能会产生一些奇怪的边缘情况。更好的选择是移动{%compress%}调用之外的地图标记。由于谷歌地图已经预先压缩,并托管在谷歌的快速CDN上,因此无论如何,您的网页加载速度都会比您尝试自行服务时更快。