1

ウェブフォントを提供する目的で、GoogleCloudStorageバケットを設定しました。CORS設定を使用することで、woffフォントをIE 9、webkit、firefoxに正しく提供できます。eotを7や8などに設定します。キャッシュ制御は遠い将来に設定されます。動作はwebkit/mozillaブラウザで期待どおりです-フォントは一度要求され、クライアントコンピュータにキャッシュされます。

ただし、Vary:Originヘッダー(変更できないように見える)により、Internet Explorerは各ページ要求に対してIf-Modified-Since要求を発行し、304になります。IEからのこのすべてのページの再検証は、フラッシュがあることを意味します。すべてのページにスタイルのないコンテンツが含まれているため、ヘッダーをより細かく制御できる独自のサーバーを使用するように戻す必要がありました。

これをローカルで再現しました。私たちのテストでは、Access-Control-Allow-Originディレクティブの有無にかかわらず、フォントファイルが同じオリジンから提供されているかcdnから提供されているかには違いがないことが示されています。重要な問題は完全にVaryヘッダーであり、GoolgeのサーバーはそれをOriginに設定します。

この動作は、IE7、IE8、およびIE9に共通です。これは、a)VaryヘッダーをVary:Accept-Encodingに変更するか、b)Varyヘッダーを完全に削除することで解決できます。これにより、すべてが正常に動作します。

現在の構成では、GoogleCloudStorageをフォントファイルのcdnとして使用できません。これは苛立たしいことです。

Varyヘッダーを制御する方法はありますか?これは考慮されるかもしれない何かですか?そうでない場合、その機能をサポートするCDNはありますか?

ありがとう。

4

1 に答える 1

2

Vary: Origin応答のヘッダーを削除するには、次の2つの方法があります。

  1. すべてのオリジンを許可するようにCORS設定を設定します<Origin>*</Origin>
  2. オブジェクトをCORSが無効になっているバケットに入れます(デフォルトの動作)。

それ以外の場合Vary: Origin、応答は発信元によって異なるため、正しいキャッシュ動作にはヘッダーが必要です。

于 2012-11-10T01:56:47.577 に答える