私はtravelagency用のWebサイトを開発したプロジェクトに取り組んでいます。物事はますます良くなり、交通量も増えています。問題はゆっくりと生成されたpricetablesにあります。私と私のクライアントは、利用可能な資金のために、memcacheはそのトリックを行うべきだと考えました。私が始めたばかりだったので、新しいjQuery ajaxコードで古いajaxコードを書き直しました。この晩のいくつかの記事は、このトピックを少し覆っています。ajaxでデータを送信しているときにデータが失われる
今、私は特定の月のpricetableを示し、次のコードを持っている:
function ShowPriceTable(targetElement, accommodationID, month)
{
$.ajax({
type: "POST",
url: basePath + "/ajax/GetPriceTable.php",
data: "accommodationID="+accommodationID+"&month="+month,
success: function(data){
$("#"+targetElement).html(data);
$.ajax({
type: "POST",
url: basePath + "/ajax/WriteCache.php",
data: "accommodationID="+accommodationID+"&month="+month+"&data="+data,
});
}
});
}
GetPriceTable.phpは、多くのクエリを実行し、大容量のファイルであるとpricecalculationの多くは、そこで行われています。すべての結果が価格のHTML表になります。 data
に格納されたその出力は、divのinnerHTMLプロパティに注入されます。この場合はtargetElement
です。調整可能である必要があるためです。
私は正しいと思いました。data
に正しい出力があるとき、私はちょうどWriteCache.php
への別の呼び出しをデータで発します。その後、データはmemcacheサーバーに$cache->set("my_key", $_POST["data"]);
で保存されます(ヘッダーは過去に使用され、ブラウザの新しい訪問を確実にするために設定されています)。
私は何をしようとしても、私はキャッシュ内に正確に4067文字しか入れません。私は考えることができるオプションを使い果たしました。これは合計出力のほんの一部です... 追加、alert
のdata.length
は、私が探している宿泊施設のための値札に私を示しました、長さは98.858です。
この奇妙な動作の原因は何ですか?データを少しずつ渡すことはできますか? Memcacheにはオプションchunk_size
があり、デフォルトでは8192に設定されています(documentationは教えてません)
ご協力いただきありがとうございます。
乾杯!
p.s. memcachedのタグはmemcacheのでなければなりませんが、私はそのオプションを選択することができません。..
更新 問題はmemcacheのとは無関係です。何らかの理由で、データが再度送信されている間にデータが変更されます。これは何らかの理由でキャッシュに設定されておらず、私の出力(自分宛のメール)には表示されないが、結果を出力(成功を使って:2番目の呼び出しで)別のDIVに出力する無効なHTMLになります'mangled'出力...
同僚は先月前半同様の問題を抱えていましたが、彼は$ .ajax投稿を介して1MB以上のデータをサーバーに送信しようとしていましたが失敗し続けました。彼は100万バイト未満のチャンクでアップロードしなければならなかったし、クラッシュして送信しないだろう。多分あなたのエラーは同じような場所にありますか? –
このようなソリューションの実装方法についてのご意見はありますか? – Ben
'data:" accommodationID = "+ accommodationID +"&month = "+ month +"&data = "+ data.serialize()、 – alykhalid