クライアントEmber.TEMPLATESの にキャッシュ オブジェクトを保存/復元することは可能でしょうか?localStorage
これを実行したい理由は、最初にクライアントにプリコンパイル済みのテンプレート全体を送信するのではなく、バックエンド サーバーから「オンデマンド」でロードするためです。Ember.TEMPLATESここで、ユーザーがブラウザーをリロードすることを決定した場合、クライアントが既に要求されたテンプレート ファイルについてバックエンド サーバーに再度クエリを実行する必要がないように、オブジェクト全体を保存/復元したいと考えています。
次の関数を使用してテンプレートを に保存できlocalStorageますが、まったくきれいではない (またはパフォーマンスが最適化されていない) と思います。
saveCacheToLocalStorage: function() {
  var stringifiedCache = "{ ";
  for(var tmpl in Ember.TEMPLATES) {
    stringifiedCache += JSON.stringify({name: tmpl, template: Ember.TEMPLATES[tmpl].toString()});
  }
  stringifiedCache += " }";
  localStorage.setItem(this.localStorageId, stringifiedCache);
  this.hasChanged = false;
  return true;
}
しかし、から文字列化された値を解析しようとするlocalStorageと、Syntax Error: Unexpected token: {. 私の問題に対するより良い解決策はありますか?
Web アプリケーションのユーザーはさまざまな領域にアクセスし、Web アプリのさまざまな機能を使用するため、すべてのテンプレートをすべてのユーザーに提供することは受け入れられないため、最初はすべてのプリコンパイル済みテンプレートを提供することはできません。
編集
スクリプトにいくつかのエラーがあり、テンプレートを に保存/復元できるようになりましたlocalStorageが、Web サーバーから取得したテンプレートを一時的に保存する別のキャッシュを作成して、テンプレートを に保存できるようにする必要がありましたlocalStorage。どういうわけか、Ember.TEMPLATESそれ自体からテンプレートを取得することはできません。これは、常に同じ関数を取得しているためです。