2011-12-21 12 views
2

質問を簡単にするために、私のサイトは次のように動作します。私は自分のサイトのほぼすべてのページで使用されるJavascriptでデータを配列しています。私はすべてのページで、このjavascript配列を印刷するためにPHPを使用します。今度はこの配列が約0.5MBになりました。あなたが想像できるようにシステムが遅れています。簡単なオプションは、キャッシュに何かを入れることです。そのため、配列は毎回印刷する必要はありませんが、値を格納する配列は、ユーザーが別のページをブラウズしている間に時々更新されます。大きなクッキーをJavascriptに格納する方法

JavaScriptのCookieを使用して情報を保存し、配列が変更されたかどうかを確認するための簡単なPHPを実行し、古いCookieを削除してそのCookieにダウンロードした場合。しかし、私はクッキーにはサイズ制限があると信じられています。

誰かがこれに対する良いアプローチについて何か提案していますか?

ありがとうございました!

+0

あなたは0.5MB相当のデータをHTTPレスポンスからHTTPリクエストに移動するでしょうか? : - ? –

答えて

3

クッキーは Webリクエスト( htmlページ、画像など CSSファイル...)は、サーバーに送信されます。すべてのWebリクエストで1/2MBのデータをアップロードするのは難しいです。このため、Cookieは極端に少なくてすみます。

これにはエキゾチックなものは必要ありません。

PHPスクリプトで必要なデータを出力しましたか?それは、長い時間要求をキャッシュすることができるブラウザに示唆するHTTPヘッダーを送りますか?データの更新を強制するには(変更されたとき)、クエリ文字列の引数を変更して、スクリプトsrcのURLを変更します。 URLが変更されているので、ブラウザは以前にURLを要求していない場合、ファイルを要求しなければなりません。一意性を保証するために、連続番号付けスキームを使用します。

例えば、1234年には、最新のリビジョン番号

<script src="js-data.php?version=1234"></script> 

JS-データです。PHPは

<?php 
header("cache-control: max-age=1000000"); 
header("content-type: application/javascript"); 
echo 'var data = {...}'; 

代わりに、代わりにリビジョン番号を変更するので、このような理由のために正確に設計されてJS-data.phpスクリプトのサポート条件付きのHTTP要求を、作ります。 HTTPヘッダーについてのmopreと新鮮さがここで解決される方法をここで読むことができますhttp://www.mnot.net/cache_docs/

前者の方法は、ブラウザーが新鮮さをチェックするためにWebサーバーに追加のHTTP要求を行う必要がないという点でより効率的ですメソッドは、すべてのhtmlページに最新のリビジョン番号を出力するロジックを持つPHPコードを追加する必要はありません。すべてのロジックはjs-data.phpスクリプトに含まれています。これは、管理して作業するほうがずっと簡単です。

0

WebStorageを使用してこれを行うことができます。これはかなり最新のブラウザに限定されていますが、必ずしも最先端のブラウザではありません。ここを参照してください:Wikipedia WebStorage

2

この問題は次のように解決します。
あなたの配列にjavascriptコンテンツを返すPHPファイルを作成します。 このファイルでは、変更があるかどうかを検出して、 配列を更新する必要があります。配列を更新する必要がある場合は、内容を返すそうでない場合は、リソースが

PHPファイルの内容は次のようになります変更されていないではないことを意味 リターンHTTPステータス304: script.php

<?php 
$nochanges = TRUE; 

//Detect if changes are required 

if($nochanges) 
{ 
    http_send_status (304); 
} 
else 
{ 
?> 
<script> 
    myarray=[1,2,3]; 
<script> 

コンテンツをHTMLの

PS: 申し訳ありませんが、PHPを使用していないので、正しく行う方法がわかりません。

関連する問題