2

パフォーマンス上の理由から、django-compressorを既存のdjangoプロジェクトに統合しようとしています。

ルートテンプレートのブロックの周りにタグを追加{% compress css %}しまし{% compress js %}た。ここで、すべてのJSおよびCSSスクリプトが子テンプレートに含まれています(つまり、サイト上の他のすべてのページは、ルートテンプレートのこれらのブロックを拡張して、ページ固有のファイルを配置します)。これはほとんどの場合完全に機能しますが、1つのページに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

技術的に可能ですか?はい...マップをアセットフォルダーにダウンロードして、そこから圧縮できます。

ただし、これは Google の利用規約に違反しており、奇妙なエッジ ケースが発生する可能性があります。より良い方法は、マップのタグを {% compress %} 呼び出しの外に移動することです。Google マップは事前に圧縮されており、Google の高速 CDN でホストされているため、自分でサーバーを作成しようとした場合よりも Web ページの読み込みが速くなります。

于 2013-06-04T18:28:36.633 に答える
0

いいえ、私の知る限り、これは不可能です (django-compressor を大幅に変更しない限り)。あなたの説明に基づく最善の解決策は、ローカルの圧縮可能なスクリプトとリモート スクリプトに別々のブロックを用意し、子テンプレートにそれらを適切に使用させることです。

于 2013-03-26T19:13:01.273 に答える