Sto lavorando a un progetto in cui ho sviluppato un sito Web per un travelagency. Le cose stanno migliorando e viene generato più traffico. Il problema sta nei prezzi prestabiliti lenti. Io e i miei clienti pensavamo che, a causa dei fondi disponibili, Memcache avrebbe dovuto fare il trucco. Uscito com'ero per iniziare ho riscritto il vecchio codice Ajax con il nuovo codice jQuery Ajax. Alcuni altri post di questa sera trattano un po 'questo argomento.Durante l'invio di dati da parte di ajax, i dati vengono persi
ora ho il seguente codice che mostra un pricetable per un certo mese:
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 è un file di grandi dimensioni, l'esecuzione di molte query e un sacco di pricecalculation è fatto lì. Tutto si traduce in una tabella HTML con i prezzi. Tale output, memorizzato in data
viene iniettato nella proprietà innerHTML di un div, in questo caso targetElement
perché deve essere regolabile.
Ho pensato, beh .. quando ho l'uscita corretta in data
ho appena sparato un'altra chiamata a WriteCache.php
con i dati. I dati vengono quindi memorizzati nel server memcache da $cache->set("my_key", $_POST["data"]);
(le intestazioni vengono utilizzate e impostate sul passato per garantire una "nuova" visita per il browser).
Ora arriva la parte difficile ... non importa quello che provo, ottengo solo ESATAMENTE 4067 caratteri nella mia cache. Ho esaurito le opzioni a cui riesco a pensare. Questa è solo una piccola parte dell'output totale ... L'aggiunta, uno alert
di data.length
mi ha mostrato nella tariffa per la sistemazione che sto cercando, la lunghezza è 98,858.
Avete qualche suggerimento che cosa potrebbe causare questo strano comportamento? Può essere che i dati vengano passati poco a poco? Memcache ha un'opzione chunk_size
, di default è impostato a 8192 (byte immagino ?, il documentation doen't dire ..)
Ogni aiuto è molto apprezzato!
Cheers!
P.s il tag memcached deve essere memcache ma non riesco a scegliere tale opzione ..
Aggiornamento Il problema è irrilevante per memcache. Per qualche motivo i miei dati vengono cambiati mentre vengono inviati di nuovo. Ciò si traduce in HTML non valido che, per qualche motivo, non è impostato nella cache e non viene visualizzato nel mio output (posta per me), ma quando esco il risultato (utilizzando successo: nella seconda chiamata) a un altro DIV vedo il output "storpiato" ...
Un collega ha avuto un problema simile all'inizio del mese scorso, stava cercando di inviare più di 1 MB di dati al server tramite un post $ .ajax e ha continuato a fallire. Doveva caricare in blocchi di meno di 1 milione di byte o si sarebbe bloccato e non inviato. Forse il tuo errore si trova in un posto simile? –
Qualche idea su come implementare una soluzione del genere? – Ben
Solo un'ipotesi ma prova 'dati:" accommodationID = "+ accommodationID +" & month = "+ month +" & data = "+ data.serialize(),' – alykhalid