Home > Internet > Movabletype > Javascriptは最後に・・・

Javascriptは最後に・・・

YSlow for Firebug使ってる方いると思うんですが、体感速度を上げる方法として、「CSSは最初に読み込み」「Javascriptは最後に読み込む」ってのがあるみたいです。
基本的な画面表示は先に終わらせるってことみたいです。

それで、スクリプトをまとめて、フッターの後・</body>の直前に置こうと思った場合に、問題になる点があります。

ひとつは、コメントフォームでのグリーティング表示部分。もう一つはウィジェット部にスクリプトが含まれるようなケースです。

このサイトでは、その様なテンプレートの途中で出現するJavascriptを、すべて変数にぶち込んでおいて、最後に出力されるようにしています。

方法は簡単です。ヘッダー内のスクリプトが書かれている部分を SetVarBlock タグで囲み変数に入れてしまいます。デフォルト・テンプレートだと「HTMLヘッダー」テンプレートモジュール内の以下の部分になります。

<script type="text/javascript" src="<$mt:Link template="javascript"$>"></script>

この部分を次のように囲みます。

<MTSetVarBlock name="LoadScript">
<script type="text/javascript" src="<$mt:Link template="javascript"$>"></script>
</SetVarBlock>

これで、後は</body>の直前に、<$MTVar name="LoadScript"$>で出力してやればよくなります。

さぁ、後はテンプレートの途中に出てくるJavascriptをどうするかです。
もちろん途中に出てくるスクリプトも、SetVarBlock タグで囲んじゃえばいいんです。

<MTSetVarBlock name="LoadScript" append="1">
    <script type="text/javascript">
    <!--
    mtAttachEvent("load", mtEntryOnLoad);
    mtAttachEvent("unload", mtEntryOnUnload);
    //-->
    </script>
</MTSetVarBlock>

そう、お馴染みの append="1" で変数に追加するのがポイントになります。
サイドバーのウィジェット内で使用しているJavascriptも、同様に追加しましょう。
こうする事で、ウィジェットで使用するJavascriptの記述を、ウィジェット外に移動させることなく、最後に読み込まれるように変更が可能になります。

後の問題は、スクリプト自身がその場に出力をするようなもの。
これは、display:none;したDIV内で、スクリプトに出力をさせて、その結果をinnerHTML使って、本来の場所に書き出すことで対応可能です。

また高速化という観点からいえば、可能なスクリプトはAjaxにより非同期で実行すると、体感速度が上がります。

ping a Trackback

TrackBack URL for this entry.(1)

Please! leave a Comment.

スクリプトの読み込みが完了していません。

Sign in Sign in Sign in

メールフォーム(Javascriptを使用していません)や、twitter.pngTwitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。

Comment Form

QuickTagsHere

EmoticonHere

(入力しない場合「Anonymous」で代替されます)
(公開はされませんが、Gravatarアイコンの取得や、Comment Subscribeの送信先アドレスとして使われます)
(入力すると、コメント表示でユーザー名にリンクが貼られます)
(この情報は、JavascriptによりCookieに保存されます。)

NotifyMail Powered by Comment Subscribe

はてブコメント:

Home > Internet > Movabletype > Javascriptは最後に・・・

MT5Techniques

MT5Techniques

2冊目の共著「Movable Type 5 実践テクニック」(シックスアパート監修)が出版されました。(ソフトバンク クリエイティブ刊)

検索
(5)
(6)

別ページに遷移します。

Powered by Hyper Estraier

Feeds
Link Status
In One

なかのひと

位置情報ブログパーツ「なかのひと」

Links
Powered By

Return to page top