使用远程脚本的压缩程序(Google Maps API)
我正试图将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跳过这个脚本? 有没有办法让它访问和压缩远程脚本?
不,AFAIK这是不可能的(不用修改django压缩器)。 根据您的描述,最好的解决方案是为本地可压缩脚本和远程脚本设置单独的块,并让您的子模板适当地使用这些块。
技术上可行吗? 是的...您可以将地图下载到您的资产文件夹,然后从那里压缩。
但是,这违反了Google的使用条款,可能会造成一些奇怪的边缘情况。 更好的选择是移动{%compress%}调用之外的地图标记。 由于谷歌地图已经被预先压缩,并且托管在Google的快速CDN上,无论如何,您的网页加载速度要比试图自己服务的速度快。
链接地址: http://www.djcxy.com/p/68513.html