2

「htmlレベル」でjspキャッシュを実装したいと思います。私の考えは:

for each request{
  if(exists("/cache/<product_id>/<product_name>.html")){
    response "/cache/product/1234/cat.html"
  }else{
    response database.getCat("1234")
  }
}

exists(String path){
   if(!file(path)){
     return false;
   }else{
      if((currentDate = file(path).createdAt) > CACHE_TIME){
         return false
      }else{
          return true
      }
   }
}

したがって、CACHE_TIME以降にページが表示されなかった場合にのみ、データベース(または別の重いプロセス)に移動することがわかります

例:

ユーザー 1 はhttp://mysite.com/products/1234/cat.jsp に移動します システムはデータベースに移動し、html ファイル (products-1234-cat.html) を生成します ユーザー 1 はページを参照します すぐにユーザー 2 が来て、に移動します同じ url システムはキャッシュが存在することを認識するため、products-1234-cat.html を使用して応答します (データベースなし、重いプロセスなし)。

どうすればこれを実装できますか?

私が欲しいものが明確だったことを願っています

4

1 に答える 1

0

Apacheを使用する場合は、mem_cacheモジュールまたは同様の http://httpd.apache.org/docs/2.2/caching.htmlを使用することをお勧めします。

ただし、アプリケーションレベルのキャッシュを使用する正当な理由がある場合は、別の方法で行う必要があります。ロジックを追加しない限り、スレッドセーフではありません(つまり、キャッシュされたhtmlファイルを作成するときの競合状態を意味します)。

新しいカスタムタグをJSPタグライブラリ(customtag:cache)に追加し、コンテンツをこのタグにラップします。キャッシュのttlまたはその状態(ウォーム、コールド)に応じて、キャッシュタグ内から実際のコンテンツをレンダリングするか、HashMapに保存できるキャッシュバージョンをレンダリングします。

于 2012-10-01T15:06:51.740 に答える