バッファ技術でJSPアプリケーションの性能と安定性を向上させる。


一、概説はWebアプリケーションにおいて、一部のレポートの生成にはデータベースが時間がかかります。あるウェブサイトは天気情報を提供しています。これはリモートサーバーにアクセスしてSOAP呼出しをしてこそ、温度情報を得ることができます。すべては複雑な情報の例です。Webページに多すぎる複雑な情報を追加すると、Webサーバ、データベースサーバに負荷がかかりすぎる可能性があります。JSPコードブロックバッファは、開発者に様々な複雑な情報の自由をもたらす。JSPはマークライブラリ内で複雑なJavaコードをカプセル化して実行することができ、JSPページのファイルはよりメンテナンスしやすくなり、非専門開発者がJSPページのファイルを使うことがより便利になります。今では多くの標識庫があります。それらは商業製品か、あるいはソースコードの開放製品です。しかし、これらの製品の多くはマークライブラリの形だけで実現されています。もともとは簡単なJava Scripletで実現できる機能を実現しています。特定の創造的な方法でカスタムマークを使用する製品はめったにありません。JSPカスタムマークライブラリが出現する前にはほとんど実現できない使い方を提供しています。OCacheマークライブラリはOpenSymphoneによって設計されています。これは創始的なJSPカスタムマークアプリケーションであり、既存のJSPページの中で高速メモリバッファを実現する機能を提供しています。すでにいくつかのベンダーが様々な形のキャッシュ製品を提供していますが、それらはすべて特定のベンダー向けの製品です。OscCacheは、JSP 1.1対応のサーバーで動作することができます。既存のJSPコードブロックをすべてのユーザにバッファリングするだけでなく、ユーザー単位でバッファリングすることができます。OCacheはまた、磁気ディスクにバッファリングし、プログラム可能なバッファリフレッシュ、異常制御など、伸縮性を高めるための高級な特性を含んでいます。また、OpenSymphoneの他の製品のように、OScheのコードもオープンソースコードのライセンス契約の下で無料で発行されます。本論文は一つの仮想オークションサイトの設計過程を例にとって、OSCacheの仕事過程を紹介する。この仮想Webサイトは、最近のオークション活動を報告する管理ページを含みます。一つの機能が完備していて、各種の宣伝情報を持っているホームページです。特別なナビゲーションバーは、まだ取引されていないすべてのユーザのオークション活動情報を含んでいます。二、管理ページのオークションサイトには管理レポートが含まれています。データベースサーバは数秒でこのようなレポートを作成することができます。レポートの作成時間が長いということは重要です。複数の管理者にシステムの運行状況を監視させてもいいです。同時に管理者が訪問するたびに、このレポートを再生成することを避けたいです。これを実現するために、私たちはページ全体をアプリケーションレベルのバッファマークに入れます。このバッファマークは1時間ごとに更新されます。他のサプライヤーが提供している製品にも似たような機能がありますが、OCacheはそれらよりもっとよくできています。簡単な計算のために、私達はフォーマットの問題にあまり関心を持ちません。管理ページを作成する時、まずタグライブラリ声明をページに追加します。「%@taglib uri="cachectags"prefix="cache"%」これからcacheマークでページ全体を包囲します。cacheマークのデフォルトのバッファ時間は1時間です。cache:cache>….複雑な管理報告書、今は管理ページがバッファされています。管理者がページ生成後1時間以内に同じページにアクセスすると、以前にキャッシュされたページになります。このレポートはデータベースサーバで再生成する必要がありません。三、ホームページのオークションサイトのホームページでは、ウェブサイトの活動状況を表示し、それらが間もなく終わる競売活動を宣伝する。私たちは現在行われているオークション活動の数を表示したいです。現在ユーザー数を登録して、短期間で終了するオークション活動のリストと現在の時間を表示します。これらの情報は異なる時間精度の要求を持っている。ウェブサイトのオークション活動は通常数日間続けられますので、バッファ有効オークションの数を6時間と決められます。ユーザー数の変化は明らかに頻繁になりますが、ここではこの値を毎回15分間バッファします。最後に、ページに表示される現在の時間が常に正確なページアクセス時間であることを期待します。ホームページでマーカーを宣言した後、まずバッファなしで現在の日付を直接出力します。今は「%=new java.util.Date()%」です。次にリストを表示します。最近のオークション活動を含むIterater Iterator auctions=….while(auctions.has More){Auction}auction=(Auction)auctions.next();<>li><%=auction%>最後に、現在行われているオークション活動の数を表示したいです。この数字は6時間の猶予が必要です。cacheタグに必要なのはバッファデータの秒数ですので、6時間を21600秒に変換します。<%//データベースを検索してオークション活動の総数int auctionCount=...>当サイトで行われているオークションイベントは「%=auctionCount%」があります。cache>少しのコードだけで複雑なバッファシステムのあるホームページを作っているのが見えます。このバッファシステムはページの各部分をそれぞれバッファリングし、各部分のバッファ時間はそれぞれの情報変化の頻度にぴったりです。バッファができましたので、ホームページにもっと多くのコンテンツを入れられます。これまでバッファがない場合は、ホームページに過剰なコンテンツを入れるとページのアクセス速度が遅くなり、データベースサーバに負荷がかかりすぎる恐れがあります。四、ナビゲーションバーはウェブサイトを計画する時、左のナビゲーションバーの下にショッピングカートの内容を表示することにしました。私たちはお客さんが競売にかけた商品の単価の回数と現在のオファー、そして今のお客さんが一番高い商品のリストを提示します。私たちは会話レベルのバッファを利用してナビゲーションバーに上記の機能を構築します。下のコードをテンプレートに入れたり、ファイルを含んだりして、サイトの他のページでこのガイドを引用します。