2016-10-09 15 views
1

ページがColdfusionで読み込まれるたびに、多くのデフォルトColdFusion JavaScriptが読み込まれます。 Goolge PageSpeed Toolsを実行すると、レンダリングをブロックするJavaScriptについて常に不平を言います。どうやら、Coldfusionには、ページロード時に多くのJavaScriptがあります。ColdFusion JavaScriptを非同期で読み込んでいますか?

...scripts/ajax/yui/yahoo-dom-event/yahoo-dom-event.js 
...scripts/ajax/yui/aniax/yui/autocomplete/autocomplete-min.js 
...scripts/ajax/yui/autocomplete/autocomplete-min.js 
...scripts/ajax/messages/cfmessage.js 
...scripts/ajax/package/cfajax.js 
...scripts/ajax/package/cfautosuggest.js 
...scripts/cfform.js 
...scripts/masks.js 

これらはすべてレンダリングブロックスクリプトと見なされます。明らかに私が見ることができないColdFusionスクリプトにasync = "async"パラメータを追加することができないため、これらを非レンダリングブロックにする方法に関する情報は見つかりません。 Coldfusionスクリプトをnone-render-blockingにするにはどうしたらいいですか?

誰か光を放つことができますか?

+1

*ページがColdfusionで読み込まれるたびに、多くのデフォルトColdFusion JavaScriptが読み込まれます。スクリプトはCF UIコンポーネントを使用する場合にのみ含まれます。インクルードはCFサーバーによって内部的に生成されます。あなたがコントロールできるものではありません、AFAIK。とにかく、googleが言うことにかかわらず、古くなっていてバグが多く、IMOをカスタマイズするのが難しいCF UIコンポーネントを使わないでください。 – Leigh

+1

https://github.com/cfjedimaster/ColdFusion-UI-the-Right-Way – luke

+0

ColdFusion UIコンポーネントの使用を中止することをお勧めします。それらは旧式であり、実装が不十分であり、悲観的に機能が制限されています。多くの場合、他のJavaScriptライブラリでも同じことを簡単に実行できます。 –

答えて

0

UIコードを書き換える代わりに、これについて何かしたいのであれば、クライアントに送信される前に実際にバッファから出力を取得して変更することができます。修正は、ハードコードされたスクリプトタグのリストを削除し、ウェブルートでホストしているカスタムスクリプトファイルで置き換えるなどの簡単な変更が可能です。カスタムスクリプトファイルは、他のスクリプトファイルの内容をすべて組み合わせたものにすぎません。

はこれを行うには:

  1. をonRequestEndのではApplication.cfcの中で、あなたが体を返しますvar outputBuffer = getPageContext().popBody().getBuffer()がクライアントに送信されるように呼び出すことができます。
  2. outputBufferで置換を実行し、それらのスクリプトタグを探して正規表現で削除します。次のステップでフラグとして使用するために実際に削除したものがあるかどうかを追跡する必要があります。
  3. 最後に、置き換えられたフラグがtrueの場合は、新しいマスタースクリプトタグを付けて出力に追加します。これを実行すると、バッファーは自動的にクライアントにフラッシュされます。

私はAdobeがスクリプトファイルを更新していないと思うので、基本的にはブラウザのキャッシュをクリアするためにマスタースクリプトファイルのバージョン管理について心配する必要はありません。

編集/注:間違いなくCF UIの使用は避けてください。しかし、あなたの状況は今のところわかりません。数百時間または数千時間の書き換えがある場合、明らかにすべてを書き換えることは現時点では実用的ではない可能性があります。

関連する問題