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 |