クールなグラフを作成できる「Open Flash Chart」のキャッシュ問題
会社の開発の案件で、グラフのプロット部分マウスを乗せたとき、その値を表示してほしいというのがあった。
ということで、今回選んだのが、クールなグラフを作成できる「Open Flash Chart」
以下のようなクールなグラフを作成することができる。
↓スクリーンショット(クリックすると拡大できます)
このグラフライブラリは、PHPの他にも、Java、Perl、Python、Ruly、.NET等に対応しており、そのクラスライブラリも配布されています。
今回は私はPHPから使用しました。
それで、Open Flash Chartを描写させるにあたり参考にしたのは下記のサイト。
まずは下記サイトからソースファイル一式をダウンロードしよう。
解凍するといろいろなフォルダができるが、PHPの場合、
- open-flash-chart.swf
- php-ofc-library (ディレクトリ)
- js (ディレクトリ)
の3つをアップロードする。
で、まずはグラフの元となるデータを作成する。
&title=Downloads,{font-size: 21px;}&
&y_ticks=5,10,6&
&line=5,#9932CC&
&values=12,41,29,35,4,30,18,13,31,5,26,26&
&x_labels=Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec&
&y_min=0&
&y_max=60&
例として、上記のようなデータを、「chart-data.php」というファイル名で保存する。
そして、グラフを呼び出すページにて、以下のコードを埋め込む。
<?php
include_once 'php-ofc-library/open_flash_chart_object.php';
open_flash_chart_object( 600, 300, 'http://'. $_SERVER['SERVER_NAME'] .'/openflashchart/chart-data.php');
?>
「open_flash_chart_object.php」までのパスと、「chart-data.php」までのパスは環境に合わせて設定する。
これでページを呼び出せば、かっこいいグラフが表示される。
で、ここで一つ問題だったのが、キャッシュの問題であった。フラッシュを呼び出すPHPコードを変更すると、きちんと呼び出されるのだが、データ「chart-data.php」を変更しただけでは、キャッシュにたまっているのか、表示が更新されない。。。
ということで、Flashをキャッシュしないように「open_flash_chart_object.php」を変更したりしてみたがうまくいかず、結局、データの読み出し側で以下のように記述することでキャッシュ問題は解決した。
open_flash_chart_object( 600, 300, 'http://'.$_SERVER['SERVER_NAME'] .'/openflashchart/chart-data.php?'.date("YmdHis"));
つまりは、chart-data.phpを読み出すとき、クエリーに適当な値をつけることによって、読み出す毎に違うURL?と見なされ、キャッシュ読み出しがされなくなると言うことみたいだ。

コメントする