[TL;DR のバージョン: 非同期呼び出しの結果を格納するクッキーを使用します。; 過去の非同期呼び出しの結果を直ちに表示し、ページの読み込み後にそれらを検証します。]
私は取り組んできたイントラネットの SharePoint サイト、クライアントの機能, 他のものの間で, 様式化された 2 番目のナビゲーション メニュー オプションは、正規の古いカスタム リストを介して管理されます。 アイデアは、クライアントに影響を与えるまたはそれが出すグローバル ナビゲーションによって影響されることがなく「自分」のサイトのメニューを制御するを取得します。.
(別のポストには根本的にサイトの挙動についてのほぼすべてを変更するいくつかの CSS と js ファイルを読み込みます HTML ファイルを指す CEWP を追加する方法について信じられないほど破壊的な何かがあります。)
この非常に単純なコード:
- ページの読み込みが完了し、残りの部分または lists.asmx または何を使用してリストからメニュー項目をロードするを呼び出す非同期に待機します。
- JQuery を使ってください。, 場合束を動的に読み込みます <李>親内の <ul> (キリスト教ピンダーここを参照してください、簡単に割り切っているこのペアマイクロホンの説明)
- すべての書式設定に CSS を使用します。
- 利益!
咽頭痛スポットここでは、誰も 1 つのサイトのページをヒットするたびに, そのユーザーの web ブラウザーは、リストから項目を取得に達しています。 安定し、完全な開発が完了し、テストすることが証明されています, この呼び出しは必要以上 99% まれ、メニューから時間を変更します。 ハイパー ajaxy web サイトのこの勇敢な新しい世界で共通である奇妙な UI に影響しています – ページがレンダリングされ、だけにしては、メニューのレンダリングします。 神経質であり、私の見解で気が散る。 神経質. だから, キャッシュ。
Thusly、ロジックを変更:
- 最後に読んだようにメニューを含む、ブラウザーで cookie を探します
- 場合が見つかりました, すぐにレンダリングされます。 ページの読み込みが完了するを待ってはいけない。 (あなたの HTML は、ここで戦略的に配置を確認する必要があります。, 行うは難しいではないです。).
- ページの読み込みが完了し、残りの部分または lists.asmx または何を使用してリストからメニュー項目をロードするを呼び出す非同期に待機します。
- 私はクッキーに対して得た比較します。
- それと一致する場合, 停止
- それ以外の場合, jQuery を使ってください。, 場合束を動的に読み込みます <李>では <ul>
- すべての書式設定に CSS を使用します。
- 利益!
あなたのいくつかと言うとしています。, "ねえ! とにかく、メニューを読んでいるのでここに実際キャッシュことはできません。 ひとつひとつの時間.” あなたは正しい – を与えていないよ、サーバー任意区切りの種類。 しかし、HTML ペイロードを完全にレンダリングの呼び出し非同期は、ページの初期後に起こる, それは「感じ」より、ユーザーに対応します。 メニュー レンダリングはかなり限り、ページを描画します。 変更する場合は、メニュー, ユーザーがメニューの神経質な再描画を受ける, その 1 つの時間だけが.
このキャッシュをより効果的し、同時に、サーバーを手助けするいくつかの方法があります。:
- 「Cookie のキャッシュ」は最小の有効な規則に含める 24 時間またはいくつか他の時間枠. 有効期限が切れた cookie がない限り、, クッキーのメニューのスナップショットを使用して、サーバーをヒットしません。.
それはすべて今気になることも. :).
誰もがここの巧妙なアイデアを持っている場合私はそれらを知っているみたい.
そして最後に-この手法は他のもの使用ことができます。 このクライアントのページのさまざまなページにデータ駆動型のものの数, それらの多くは比較的稀に変更します。 (週に一度あるいは月に一度のような). 特定の機能領域を対象する場合, ローカル cookie ストアからコンテンツを引っ張ってくるとすぐにレンダリングして、応答性の高い UI を与えることができます。 ない任意のサイクル、サーバーを保存している場合でも、それユーザーに速く感じる。 あなた ことができます。 このローカル cookie のキャッシュを無効にするいくつかの条件とトリガーの決定によって、サーバ ・ サイクルを保存します。 それはすべての状況と芸術的なものと最も本当に楽しい :).
</終了>
私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin
こんにちはポール,
素敵な実装, それは我々 が使用するものですが我々 はクッキーの代わりに HTML5 のローカル ストレージ API を使用します。. 我々 のクッキーを許可することができます以上を格納するために必要な最初のドライブは. 付加的な利点は、ペイロードを増加しないことが, cookie は、前後に送信されるに対し. 開発の観点からは非常に使いやすいです。.
ブラウザーのサポートが、正直かなり良い完璧ではないです。, http://caniuse.com/namevalue-storage .
ジョナサン