グループウエアへのスケジュールデータをpoiを使って、ふだん使っているエクセルデータから読むようにしている。WEBで入力したり、インポートしたりという手間を省くためだ。ただ、残念ながら、データベースにくらべ、読み込みにどうしても負荷がかかるようだ。(これも、グループウエアが遅くなる原因か?)
そこで、キャッシュデータを使う方法を考えてみた。
public void doGet(..................
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int cmin=hour*60+minute;//現在時刻 整数値
ServletContext sc = getServletContext();
String ptime = (String)sc.getAttribute("time");//前回のキャッシュ時の時刻
String Cachex=(String)sc.getAttribute("cache");
if(cmin>=Integer.parseInt(ptime)&&cmin<=5+Integer.parseInt(ptime) && Cachex!=null){
//前回のキャッシュ作成から5分以上経過してないときは、キャッシュ利用
out.print(Cachex);
return;
}
Cache=ここで、poiの機能を使って読み取った 表示させたいデータ をセット
..............................................
ServletContext scc = getServletContext();
scc.setAttribute("cache", Cache);
String pptime="";
pptime=Integer.toString(cmin);//hhmm形式の時刻記録
scc.setAttribute("time",pptime);
0 件のコメント:
コメントを投稿