Curl Global Community
Curl アプレットを同期させるための注意点 - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Blogs (https://communities.curl.com/forumdisplay.php?fid=17)
+--- Forum: Tech blog (https://communities.curl.com/forumdisplay.php?fid=18)
+---- Forum: Baison log (https://communities.curl.com/forumdisplay.php?fid=27)
+---- Thread: Curl アプレットを同期させるための注意点 (/showthread.php?tid=1074)



Curl アプレットを同期させるための注意点 - umemura - 04-22-2014

★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/util/se503248.html