クライアントスクリプトによって生成される同期 AJAX 呼び出しの特定と削減 Issue インシデントなどのフォームのロードに時間がかかりすぎるか、インタラクションが可能になる前にフリーズします。クライアントトランザクションタイミング ウィジェットまたはログは特定のフォームトランザクションに対して長いブラウザー時間を示している。 注意: クライアントスクリプトからビジネスルールを呼び出すには、GlideAjax を使用します。GlideAjax クラスを使用すると、クライアントからサーバーサイドのコードを実行できます。CauseonLoad および onChange クライアントスクリプトでの GlideRecord 呼び出しの使用。onLoad および onChange クライアントスクリプトでの getReference 呼び出しの使用。Resolutionクライアントスクリプトは、フォームのユーザーインターフェイスに機能を追加します。サーバーからデータを取得してフィールドに入力したり、ユーザーのフォームとの対話機能に影響を与えるロジックを通知したりできます。最初のページ要求後にサーバーからデータを取得する方法はいくつかありますが、これらの方法の中には同期取得を使用するものもあります。これにより、データが取得されてスクリプトが実行されるまで、ブラウザーウィンドウとの対話機能が一時停止します。フォームのロード後にデータの複数のラウンドトリップ要求を行うと、フォームが長時間一時停止する可能性があります。 フォームのロード時に発生する同期 AJAX 呼び出しを識別するには、次のようにします。 このシーケンスには、デバッグ機能を備えたブラウザが必要です。Chrome、Firefox、Safari、およびEdgeの最近のバージョンなどのすべての最新のブラウザには、同様のユーティリティがあります。 ServiceNow インスタンスで、遅いフォームのレコードリンクを見つけます。ブラウザーの 開発者ツール を開き、次の設定を有効にします。 ネットパネルを有効にします。コンテンツタイプとして XHR を選択します。 消去ボタンをクリックしてから、フォームへのリンクをクリックします。開発者ツールのフレームで、 POST xmlhttp.doの URL 値を持つエントリが表示されるかどうかを確認します。各 xmlhttp.do 要求を展開し、各要求の [投稿 タブにリストされているデータを調べます。 注意: 同期 AJAX 要求は、 sysparm_processor 値が AJAXGlideRecord であると識別できます。 投稿タブで、各同期 AJAX 要求のsysparm_chars値とsysparm_name値を記録します。 注意: 複数の要求で両方のパラメーターの値が同じ場合、同じデータに対する冗長な要求が発行されるため、統合できます。 [ タイムライン 列から、すべての同期 AJAX 要求のタイミングの組み合わせを、sysparm_processor 値 AJAXGlideRecord で記録します。 注意:これらの要求を GlideAjax アプリケーションプログラミングインターフェイス (API) で非同期に変換すると、フォームのロードにかかる時間を短縮できる可能性があります。 同期 AJAX 呼び出しを発行するクライアントスクリプトを識別するには、次の手順を実行します。 遅いフォームのレコードリンクを準備します。メインフレームの右上隅にある緑色のバグである JavaScriptデバッガウィンドウ アイコンをクリックします。デバッガウィンドウで、 クリア リンクをクリックします。フォームのリンクをクリックします。JavaScript デバッガウィンドウには、同期 AJAX 要求ごとに警告メッセージが表示されます。 注意: これらのメッセージには、次のテキストが含まれています: 警告 *** テーブルの GlideRecord 同期クエリ:<table_name> 同期要求を発行したクライアントスクリプトは、警告メッセージの直後のデバッグメッセージで識別されます。 注意: これらのメッセージでは、次の形式を使用します: onLoad <client_script_name> 要求を統合してこの問題を解決するには、次の手順を実行します。 同じデータに対して冗長な要求を行う既存のクライアントスクリプトをリファクタリングして結合します。1 つのスクリプトの先頭でデータを呼び出します。新しく結合されたクライアントスクリプトで、以前に分離されていたクライアントスクリプトを、データの取得後に呼び出すことができる関数として書き換えます。 GlideAjax API を使用してこの問題を解決するには、次の手順を実行します。 GlideAjax API では、データおよびサーバー側スクリプト処理の非同期呼び出しが可能です。これにより、フォームとのやり取りが一時停止することはありません。クライアントスクリプトが完了する前にユーザーがフォームの操作を開始できる状況では、 GlideRecord および getReference() 呼び出しを同等の GlideAjax に置き換えることができます。 注: GlideAjax の使用の詳細については、ServiceNow 製品ドキュメントの「 GlideAjax を参照してください。 GlideAjax を使用するように適格なクライアントスクリプトをリファクタリングします。 この記事の手順を実行しても問題が解決しない場合は、次の操作を実行します。 問題または質問を明確にします。ServiceNow 製品ドキュメントをお読みください。ServiceNow コミュニティを検索します。ServiceNow コミュニティフォーラムで質問を投稿します。新規ユーザーが投稿するには、 ServiceNow コミュニティでアカウントを作成する必要があります。テクニカルサポートチーム にお問い合わせください。Related Links関連トピックの詳細については、次の製品ドキュメントページを参照してください。 パフォーマンストラブルシューティングガイドパフォーマンスメトリクススレッドパフォーマンスモニタリングシステム診断 トピックに関連するその他の問題については、次のナレッジベースの記事を参照してください。 パフォーマンス低下のトラブルシューティング