1

appengine-web.xmlで以下を使用して、appengineで静止画像ファイルのキャッシュを有効にしました。

<static-files>
<include path="/css/images/**.gif" expiration="1d" />
    <include path="/css/images/**.png" expiration="1d" />
    <include path="/css/images/wind_pointers/*.png" expiration="7d" />
    <include path="/css/images/**.jpg" expiration="1d" />
    <include path="/errors/*" />
</static-files>

これは、奇妙な副作用を発見するまで非常にうまく機能しました。時々、appengineがHTMLページのコンテンツを含むJavaScriptファイルを提供するため、JavaScriptインタープリターにJSではなくHTMLが供給されるため、JavaScriptエラーが大量に発生します。 :

HTMLコンテンツで提供される.jsファイルによって引き起こされるJavaScriptエラー

さて、上記のappengine-web.xmlのstatic-filesセクションをコメントアウトするだけで、すべてが正常に機能します。.jsファイルは独自のコンテンツで提供され、問題はありません。

Javascriptファイルは正しく提供されます。

これは私には奇妙に思えます。.jsファイルは、そのstatic-filesセクションで指定されたディレクトリにもありません。appengine-web.xmlの構文が間違っていて、奇妙なバグが発生していますか?

幸い、 appengine-web.xmlのstatic-filesセクションをコメントアウトするだけで、デプロイされたアプリとローカル開発サーバーの両方でこれを簡単かつ確実に再現できます。ChromeとIEの両方で発生します。私はJavaアプリエンジンを使用しています。

4

1 に答える 1

1

私は何が起こっているのかを理解することができました:

ユーザーがページを要求したがログインしていない場合に特別な HTML ページが返されるようにコーディングされたweb.xmlにフィルターがありました。 .jsファイルも作成するため、フィルターは .js ファイルではなく HTML ファイルを返します。

奇妙なことは、私が問題を抱えていないということですセクションがappengine-web.xmlから削除されました。そのセクションがないと、AppEngine はデフォルトの動作に戻ります。これは、ドキュメントによると、すべてのファイルを静的と見なすものであり、その場合、問題は常に発生すると予想されます。また、.jsが返されることもあれば、HTML が返されることもありました。これは、どこかで競合状態になっているようです。私にはまだ謎です。

とにかく、フィルターがサイトの HTML ページの要求にのみ適用されるようになり、これで問題は解決しました。コメントありがとうございます。

于 2013-02-01T17:00:56.950 に答える