web-dev-qa-db-ja.com

古いJSファイルを新しいJSファイルでレンダリングするため、GooglebotでJavaScriptエラーが発生する

最近、JavaScript変数(例var GLOBAL_VAR = true;)をHTMLページ(例/Search/Index)に追加し、別のJSファイル(例/Scripts/search/index.js)を更新してそれにアクセスして使用する問題に遭遇しましたJS変数。これらの変更をWebに公開した後、Googlebotによって生成されたJSエラーを取得し始めました。これは、window.onerror関数によって送信されます。エラーは次のようなものです。

キャッチされないReferenceError:GLOBAL_VARは定義されていません

ライン1

http://example.com/Scripts/search/index.js

私たちのサイトの/ Search/Indexページにアクセスすると、新しいJS変数がそこにあり定義されていることがはっきりとわかります。

Googlebotがサイトをクロールしているときに、HTMLページが変更されたことを検出していないようです。つまり、GLOBAL_VAR変数の設定を含まない古いキャッシュされたHTMLを使用しているため、JSエラーが発生します。

2/6にHTML/JSの変更を公開しましたが、2/10の時点でまだJSエラーが発生しています。 Googlebotは今までにHTMLの変更を認識すると思っていたでしょう。過去にこの問題を経験したことはありません。

ページのHTMLが変更された場合、Googlebotがキャッシュを更新しないのはなぜですか?最も重要なことは、GooglebotがHTMLの変更を検出してキャッシュを更新できるようにするには、これらのJSエラーの取得を停止する方法です。

5
John Washam

これを解決する最も簡単な方法は、JavaScriptファイルをバージョン管理することです。その後、新しいページのみが新しいJavaScriptをフェッチします。

1
Joe Aldrich