スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

iNotes Lite Framework - Lazy loading code

2009年03月10日 00:50

今日は iNotes LiteのLazy loadingについてです。必要なときにだけコードを読み込むようなことが出来るようになったために iNotes Liteでは読み込むコード量を最小化することが出来るようになった、とよく言いますが、この技術によるところも大きいのではないかと思います。
今日はそんな話です。

バックナンバー
1. iNotes Lite Framework - Frameset
2. iNotes Lite Framework - iNotes Lite Widgets
3. iNotes Lite Framework - Lazy loading code
4. iNotes Lite Framework - Basic Layout
5. iNotes Lite Framework - Common Property

(このエントリは以下の記事を参考に書かれています)
iNotes Lite framework (Notes/Domino Wiki)

iNotes Lite Widget では、コードの読み込みを実際に必要になるまで先延ばしにする事が出来ます。これは、"lazy loading"と呼ばれています。
Lazy Load を実装するには、始めにEKc.prototype.EQj に対してエントリを追加する必要があります。EKc.prototype.EQj はiNotes Lite Widget クラス名を "code chunk symbols" のリストと関連付けているテーブルです。
これは「Lazy Loading Table」と呼ばれます。Lazy Loading Table に追加するには、Custom_JS_Lite サブフォームにあるScene_PostLoad_Lite() で行うのが一番よいのではないかと思います。
var asClass = (s_SceneName || '').split(':');
if (asClass[1] == 'EVy')
EKc.prototype.EQj['com_ibm_dwa_ui_hello'] = ['Hello'];}

Scene_PostLoad_Lite() はWidgetが初期化を終える度に実行されます。Root Element ID Widget の名前が組み合わさった形で、s_SceneNameに格納されています。なので、asClass[1] はWidgetの名前が入っています。
EVy[com_ibm_dwa_ui_panelManager] はiNotesの初期化の非常に早い段階で実行されるため、これを利用します。
この後に、以下のタグを l_StdPageOperations, l_StdPageOperations_Gecko, l_StdPageOperations_Safari などのフォームの適切な場所に挿入します。
<NotesVar name=s_GetHelloScript type=number initialvalue={0}>}

更に以下のタグも入れます。
<InsertNotesSubForm name=@{@If(s_GetHelloScript != 0; "l_Hello"; "")}>}

最後に以下のような設計要素を持つ、l_Hello Notes サブフォームを作成します。
function com_ibm_dwa_ui_hello(sId){
var oElem = AAA.EcK.getElementById(sId);
oElem.innerHTML = 'Hello world';
}}

// Specify the symbol in all non-capital letters here
EKc.prototype.FKd['hello'] = true;}

EKc.prototype.FKd [com_ibm_dwa_io_widgetListener.prototype.oLoaded] オブジェクトはロードされたモジュールを管理しています。また、複数のコードをlazy loading tabuleのエントリに指定する事も出来ます。

一度、Lazy loading table とlazy loading に必要なその他のものを指定すれば、iNotes Lite framework はどのコードがロードされていないかが分かるので、自動的にロードし始める必要があるかどうかを決定する事が出来るようになります。
ロードが必要になった場合には、iNotes Lite framework は自動的にロードされていないコードを収集し、一つのHTTPリクエストの間に、ブラウザの種類に応じて、 l_StdPageOperations, l_StdPageOperations_Gecko, l_StdPageOperations_Safari などのフォームを使用して読み込みを開始します。このようにしているのは、HTTPリクエストの増加はクライアントの応答時間に大きく影響するためです。

注:  iNotes Lite frameworkはl_StdPageOperations, l_StdPageOperations_Gecko, l_StdPageOperations_Safari などのフォームを読み込むときに自動的に、s_Getと言う接頭辞や、Script と言う接尾辞をcode chunk symbols につけます。この問題は、8.5.1 に修正される予定です。


コメント

  1. 北條 | URL | mMPV022E

    Re: iNotes Lite Framework - Lazy loading code

    初めまして。いつも興味深い記事について読ませていただいております。
    この度趣味でソーシャルブックマークのサイトを作成しまして、LotusNotesの購読コンテンツとして御ブログのRSSをリンクさせていただこうと考えております。
    また、有益な情報を常に公開された状態に残しておきたいとの気持ちから、ブログ本文をブックマーク中に引用させていただきたいと思っています。ブックマークは下記リンクのように見えます。

    http://www.tarikin.net/index.php?threadno=m00000018730

    以前ATT株式会社のNotesTipsを公開したサイトがありましたが、サービスをクローズした結果、有益な情報が見れなくなってしまったことを踏まえ、長期でNotes開発に有益な情報を外出しで残しておきたいとの考えで引用を希望しております。許可をいただけるなら定期的に引用文を載せたいのですがいかがでしょうか?よろしくお願いします。

  2. 長島 | URL | -

    分かりました

    ご訪問ありがとうございます。

    リンクと内容の引用については、引用した際にこのページへのリンクを付けていただけるなら問題ありません。はてなブックマークのようなものだと理解しました。

    今後もよろしくお願いします。

コメントの投稿

(コメント編集・削除に必要)
(管理者にだけ表示を許可する)

トラックバック

この記事のトラックバックURL
http://hnagasim.blog8.fc2.com/tb.php/105-68ee98ed
この記事へのトラックバック


最新記事


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。