04-22-2014, 04:22 PM
★point1
resync-file を利用しよう
★point2
デプロイモジュールの更新日時を変更しよう
Curl アプレットは、クライアント側にキャッシュされることで、毎回の起動時にロード時間を短縮してくれます。
さらに、それらのキャッシュは、起動時に自動でサーバに上がっているモジュールと比較され、
差分がある場合は、最新のモジュールがキャッシュされる仕組みになっています。
とはいえ、正しい設定、環境でないと、このキャッシュ更新機能がうまく働かないので、
いくつか注意するすべき項目を挙げておきます。
①resync-file を利用
②デプロイ時に各ファイルの更新日時を最新化する
①については、過去のCurlアプレット配信では resync-as-of というAPIを利用して
最新化の日時を設定していた方もいらっしゃるかと思いますが、
このAPIは、デプロイの度に対象日時を変更する必要があり、ちょっと面倒でした。
現在は、「resync-file」を利用することで、manifest.mcurl ファイルの更新日時が
自動的に対象日時として設定されます。
Curl としても、このresync-file を利用することを推奨しているようです。
②については、結構見逃されがちな問題なので、注意が必要です。
具体的には下記のような例があります。
■ケース1
resync-file を使っており、再デプロイ時に変更のあったパッケージのみ pcurl化し、
すでに運用されているアプリケーションから、そのファイルだけ、元ファイルと置き換えた。
しかし、次の日起動したら同期化されていなかった。
→理由:manifest.mcurl の更新日時がそのままなので、変更があると判断されない。
■ケース2
すでに運用されているアプリケーションを最新化するため、
デプロイ当日の12時に、デプロイモジュールを事前に作成しておき、
実際のデプロイは20時に行った。
ユーザは、当日の15時に初めてアプリケーションを起動していた
しかし、次の日起動したら同期化されていなかった
→理由:デプロイされたファイルの更新日時(12時)が、
キャッシュされた時刻(15時)より過去になってしまうため。
Curlの同期ルールを正確に理解したうえで
デプロイモジュール作成時のタイミングや、作成モジュール対象のファイルの切り分けを行えば、
これらの問題を起こさずに済みますが、
私の場合は、「全ファイルの更新日時を一括してデプロイ時刻に統一する」のが一番楽かな、
と思っています。
デプロイ時に Ant を使っているのであれば、 touch タスクで更新日時を変更するか、
ツールなどを利用して、デプロイ直前に更新日時を変更してからデプロイすれば
上記の問題は回避できます。
■(参考)ファイルのアクセス日付変更ツール
http://www.vector.co.jp/soft/dl/winnt/ut...03248.html
resync-file を利用しよう
★point2
デプロイモジュールの更新日時を変更しよう
Curl アプレットは、クライアント側にキャッシュされることで、毎回の起動時にロード時間を短縮してくれます。
さらに、それらのキャッシュは、起動時に自動でサーバに上がっているモジュールと比較され、
差分がある場合は、最新のモジュールがキャッシュされる仕組みになっています。
とはいえ、正しい設定、環境でないと、このキャッシュ更新機能がうまく働かないので、
いくつか注意するすべき項目を挙げておきます。
①resync-file を利用
②デプロイ時に各ファイルの更新日時を最新化する
①については、過去のCurlアプレット配信では resync-as-of というAPIを利用して
最新化の日時を設定していた方もいらっしゃるかと思いますが、
このAPIは、デプロイの度に対象日時を変更する必要があり、ちょっと面倒でした。
現在は、「resync-file」を利用することで、manifest.mcurl ファイルの更新日時が
自動的に対象日時として設定されます。
Curl としても、このresync-file を利用することを推奨しているようです。
②については、結構見逃されがちな問題なので、注意が必要です。
具体的には下記のような例があります。
■ケース1
resync-file を使っており、再デプロイ時に変更のあったパッケージのみ pcurl化し、
すでに運用されているアプリケーションから、そのファイルだけ、元ファイルと置き換えた。
しかし、次の日起動したら同期化されていなかった。
→理由:manifest.mcurl の更新日時がそのままなので、変更があると判断されない。
■ケース2
すでに運用されているアプリケーションを最新化するため、
デプロイ当日の12時に、デプロイモジュールを事前に作成しておき、
実際のデプロイは20時に行った。
ユーザは、当日の15時に初めてアプリケーションを起動していた
しかし、次の日起動したら同期化されていなかった
→理由:デプロイされたファイルの更新日時(12時)が、
キャッシュされた時刻(15時)より過去になってしまうため。
Curlの同期ルールを正確に理解したうえで
デプロイモジュール作成時のタイミングや、作成モジュール対象のファイルの切り分けを行えば、
これらの問題を起こさずに済みますが、
私の場合は、「全ファイルの更新日時を一括してデプロイ時刻に統一する」のが一番楽かな、
と思っています。
デプロイ時に Ant を使っているのであれば、 touch タスクで更新日時を変更するか、
ツールなどを利用して、デプロイ直前に更新日時を変更してからデプロイすれば
上記の問題は回避できます。
■(参考)ファイルのアクセス日付変更ツール
http://www.vector.co.jp/soft/dl/winnt/ut...03248.html