2

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

我在根模板中的块周围添加了{% compress css %}标签{% compress js %},其中所有 JS 和 CSS 脚本都包含在子模板中(即站点上的所有其他页面都在根模板中扩展这些块以放置其特定于页面的文件)。这在大多数情况下都可以正常工作,但是一个页面有一个带有 JS 标头的嵌入式 Google 地图:

<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 跳过这个脚本?有没有办法让它访问和压缩远程脚本?

4

2 回答 2

0

No, AFAIK this is not possible (without modifying django-compressor quite heavily). The best solution, based on your description, would be to have separate blocks for local, compressable scripts and remote scripts, and have your child templates use those appropriately.

于 2013-03-26T19:13:01.273 回答
0

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

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

于 2013-06-04T18:28:36.633 回答