Web アプリケーションでは、クライアント マシンに少量のデータを格納するために HTTP cookie を使用して、ユーザー名またはID、セッション IDなどの設定情報を格納しています。Curl アプレットもHTTP cookie を使用できます。さらにCurl API ではクライアント側 パーシスタントデータという小さなサイズのデータを格納する機能を提供しています。
では、具体的にサンプルを見ていきましょう。
プライベートパーシスタントデータ
これは、1つのアプレットのみからアクセス可能なパーシスタントデータです。これらを扱うためにまずは管理のためのリポジトリをpersistent-dataというプロシージャにより作成する必要があります。この際に有効期限等を設定することもできます。
{persistent-data “my persistent data.”, duration = 90days, max-size = 1024 } |
リポジトリ作成後、以下のようにパーシスタントデータを取得(set-persistent-data)やセット(get-persistent-dataプロシージャ)することができます。
let date:#String = {get-persistent-data “last-visit”, error-if-missing? = false} {output date} || set persistent data and commit. {set-persistent-data “last-visit”, {format “%s”, {DateTime}}} {commit-persistent-data} |
扱える型としては、null、プリミティブ形、String、FastArray-of、Array-of、HashTable-ofなどがあります。(詳細はCurlヘルプを参照ください。)set-persistent-data後、値をコミットするためにcommit-persistent-dataプロシージャを実行する必要があります。注意事項として、アプレットは最大で20までのリポジトリと256Kまでのデータしか扱うことができません。
共有パーシスタントデータ
パーシスタントデータ識別子(PDI)ファイルの persistent-data を呼び出すことで、複数のアプレットが共有できるパーシスタント データ リポジトリを作成することができます。これを利用するには、共有のscurlを作成し、その中でpersistent-dataプロシージャを呼び出す必要があります。
|| create repository {persistent-data “shared persistent data”, duration = 90days, max-size = 1024 } |
一方、各アプレットでは、パーシスタントデータを利用する前にget-persistent-data-repositoryプロシージャを用いてリポジトリ(Repositoryオブジェクト)を取得する必要があります。この際、上記の共有scurlのパスを指定する必要があります。
その後、プライベートと同様にget-persistent-data/set-persistent-dataを用いてパーシスタントデータを上記で取得したRepositoryオブジェクトを指定して扱うことができます。
{let repo:Repository = {get-persistent-data-repository pdi-name = “http://localhost/share.scurl“ } } {do let date:#String = {get-persistent-data “last-visit”, repository = repo, error-if-missing? = false} {output date} || set persistent data and commit. {set-persistent-data “last-visit”, {format “%s”, {DateTime}}, repository = repo } |
サンプルコードのダウンロード