2011-06-30 6 views
2

localstorageを使用してJquery-minを保存しようとしていますが、できません。私はいくつかのJqueryプラグインを試してみましたが、どちらも動作しません。HTML5 localstorage内のjquery.min.jsファイル全体をキャッシュする

私のWebアプリケーションのためにJqueryを一度ロードして、もう一度それを心配することはないでしょう。私が作成しているアプリケーションには、毎日訪れる人がいます。 JSファイルやCSSファイルを複数回ダウンロードする必要はないと思います。

すべてのCSSをlocalstorageに保存できますが、JqueryまたはJqueryのUIは保存できません。

とにかく、私はキャッシュマニフェストなどを使用しようとしていると知っています。しかし、私はlocalstorageにJqueryライブラリを格納する方法を探しています。 (それが目標です)。

アイデア?

編集: 誰もがコード例を求めていました。だからここにそれは私だけの小さな使用しています、それはかなり単純です....です - 小さなポストを維持するために、jQueryのバージョン縮小さを少量:表示するときに保存されている何

localStorage.setItem("name", "(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f('<'+a+'>').appendTo('body'),d=b.css('display');b.remove();if(d==='none'||d===''){ck||(ck=c.createElement('iframe'),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write('<!doctype><html><body></body>"); 

それ:

(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f('<'+a+'>').appendTo('body'),d=b.css('display');b.remove();if(d==='none'||d===''){ck||(ck=c.createElement('iframe'),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write(' 

すべてを保存するわけではありません。 parsefloat()などを使用できますか?もしそれがうまくいくなら、私はどうすればいいだろうか?

ローカルストレージが好きな理由は、簡単に制御できることです。ユーザーがキャッシュを空にすることを心配する必要はありません。私がlocalstorageを更新する必要があるなら、私は1行のコードでそれを行うことができます。これは私のWebアプリケーションの更新機能として機能します。私が何かを見逃している場合や、これを行う簡単な方法がある場合は、私に知らせてください。すぐにサンプルコードが来ます

+1

あなたは、特定のエラーを取得していますか? 「できない」という意味のことを教えてください。 – glortho

+14

CSSまたはJSをlocalstorageに保存しないでください。これはそれが意図したものではありません。適切な 'Expires'ヘッダーを設定し、ブラウザがキャッシュを処理させるようにします。 あなたがこれを期待していると知っていますが、実際には、ブラウザがこの問題を正確に処理するように設計されている場合は、自分でやってみる価値はありません。有効期限を1年に設定すると、完了です。 –

+1

Expiresヘッダーを2番目に、おそらくgoogleのような無料のCDNを使用することもできます - http://code.google.com/apis/libraries/devguide.html#jquery –

答えて

3

スクリプトファイルをBase64でエンコードしてからlocalstorageに保存すると問題はありません。以下のサンプルでは、​​jQueryファイルを除外しましたが、デモではjQuery 1.7全体がエンコードされています。

私は1つの文字列(チャンクに最もブレイクして)として、全体のファイルをエンコードするために、次のサイトを使用:http://textmechanic.co/ASCII-Hex-Unicode-Base64-Converter.html?type=text

デモ:http://jsfiddle.net/ThinkingStiff/ZMAKn

HTML:

<div></div> 

スクリプト:

var jquery = '<Base64 encoded file>'; 
var result = 'jQuery: ' + (typeof $ != 'undefined') + '<br />'; 

window.localStorage.setItem('jquery', jquery); 
jquery = ''; 
jquery = window.localStorage.getItem('jquery'); 

eval(atob(jquery)); 

result += 'jQuery: ' + (typeof $ != 'undefined') + '<br />'; 

$('div').html(result); //this works, so jQuery loaded 

window.localStorage.removeItem('jquery'); 

出力:

jQuery: false 
jQuery: true 
3

これは、HTML5ローカルストレージのすべての偉大な練習でしたが、あなたのWebサーバーがHTTP 304(Not Modified)で応答するのではないでしょうか? 1998年以来、この機能をサポートしているWebサーバのほんの一部です。 jQueryをローカルストレージにロードしたりロードしたりするために、javascriptのgobを書くよりも、サーバーが単純な304で応答する方がはるかに高速です。

何らかの理由でWebサーバーが動作しない場合は、public jQuery CDNsのいずれかを使用してください。

関連する問題