応用プログラムのキャッシュ

開発者が開発した応用プログラムは、配布サーバーから毎回ダウンロードするのではなく、ネットワークを効率的に使用するためにキャッシュを使用します。

キャッシュの種類

nexacro platformがサポートするキャッシュの種類は以下の通りです。

キャッシュの種類

説明

none

キャッシュ機能を使用しません。

dynamic

サーバーから受信したファイルが更新された時にのみ受信します。

サーバーのファイルが更新されない場合には、Local Cacheファイルを再利用します。

session

nexacro platformエンジンを起動する時に1度だけ受信し(もしもLocal Cacheファイルと一致すれば再利用)、該当のエンジンが終了するまでLocal Cacheファイルのみを使用します。

static

サーバーから1度でも受信したこのとあるファイル対し、nexacro platformエンジンの再実行と関係なくLocal Cacheファイルのみを使用します。

このため、再受信したい場合にはバージョンアップしてください。

cachelevelを指定しなかった場合、デフォルト Cacheプロパティは Dynamicに適用されます。

プロパティ値が「static」の場合、キャッシュファイルをローカルストレージに保存することになりますが、ウェブブラウザの機能制限によって、ローカルストレージが使用できません。それで、HTML5バージョンを使用している場合には、プロパティ値が「static」の場合にも、「session」で動作します。

HTML5バージョンを使用する場合には、プロパティ値が「none」であれば、ブラウザのキャッシュを使用しないのが正常です。Firefoxを使用する場合には、ブラウザのキャッシュを使用する症状がありますが、この症状はFirefoxのバグです。

https://bugzilla.mozilla.org/show_bug.cgi?id=1129500

HTML5バージョンのアプリケーションがMS IEから実行される場合、nexacro platformの内部で利用するキャッシュメモリよりも、インターネットエクスプローラのキャッシュが優先動作する場合があります。 ウェブブラウザのキャッシュオプションが「自動的に確認する(A)」であるときに、サーバーから変更されたJavaScriptファイル(*.js)が更新されない現象は、制約事項です。


Check for newer versions of stored pages: Automatically, or every time I visit

ブラウザを新たに起動したり refreshする動作では、製品が管理するメモリ上の cacheがすべてクリアされるため、session / dynamic / static設定の場合、設定値とは無関係にブラウザの動作に依存するようになります。

nexacro studioで「Launch Project」または「Quick View」メニューを使用してRuntimeを実行する場合には、typedefinitionに設定されているService-cachelevel値を無視してnoneに動作します。

(cachelevelプロパティの設定値が変更されることではありません。)

nexacro platformで画像を処理するときには、画像表現に関連する機能(size、stretchなど)とパフォーマンス上の理由で使用ブラウザのキャッシュ設定に従う動作をするように設計されました。

(プロジェクトserviceグループに設定されたcachelevelとは別の動作です。)

ExcelImportObjectまたはExcelExportObjectを使用してExcelファイルをインポートまたはエクスポートする場合には、指定されたcachelevelプロパティ値に関係なく、無条件noneに動作します。

キャッシュの適用方法

cachelevel

以下は、nexacro studioのType Definition Editor画面です。

  1. Cacheはここで登録したサービスグループにのみ適用されます。

  2. ここでは、“./Base/”というディレクトリにある全てのファイルに対し“none” cacheが適用されることがわかります。

  3. キャッシュの種類を選択します。

  4. この他にもこの画面でバージョンを設定し、staticである場合も追加受信ができるようにすることができます。

Script

application.services["Base"].set_cachelevel("none" )

checkversion

ADLのcheckversionプロパティ値を「true」に設定すると、製品のバージョンや指定されたversion値を変更した際に、強制的にキャッシュを適用しないようにすることができます。

checkversionプロパティ値を「true」に設定した場合には、generateを行う際に生成されるコードの一部が以下のように変更されます。

製品のバージョンは、別途入力しません。

インストール済のnexacro studioのバージョンに基づいて設定されます。

<meta http-equiv="pragma" content="no-cache">  
  	<script type="text/javascript" 
		src="./nexacro14lib/framework/SystemBase.js?version=14.0.1.1210"></script>
...
  <script type="text/javascript">
    function oninitframework()
    {
		application.load("Hello_nexacro", 
			"Hello_nexacro.xadl.quickview.js?version=1.0.1");