Я работаю над проектом, где я разработал веб-сайт для путешествий. Все становится лучше и генерируется больше трафика. Проблема заключается в медленно генерируемых ценовых таблицах. Я и мои клиенты решили, что из-за имеющихся средств memcache должен справиться с задачей. С самого начала я переписал старый ajax-код с помощью нового jQuery ajax-кода. Другие посты этого вечера немного освещают эту тему.
Теперь у меня есть следующий код, который показывает таблицу цен на определенный месяц:
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 - это большой файл, выполняющий много запросов, и там выполняется много расчета цены. Все это приводит к HTML-таблице с ценами. Этот вывод, сохраненный в data
, вводится в свойство innerHTML элемента div, в данном случае targetElement
, поскольку он должен быть настраиваемым.
Я понял, хорошо ... когда у меня правильный вывод в data
, я просто запускаю еще один вызов WriteCache.php
с данными. Затем данные сохраняются на сервере memcache с помощью $cache->set("my_key", $_POST["data"]);
(заголовки используются и устанавливаются в прошлое, чтобы обеспечить «новое» посещение браузера).
Теперь самое сложное ... независимо от того, что я пробую, в моем кеше только 4067 символов. У меня закончились варианты, которые я могу придумать. Это только небольшая часть общего объема производства ... Сложение , alert
из data.length
показало меня в таблице цен на жилье, в котором я ищу, длина 98,858.
Есть ли у вас предположения, что может быть причиной этого странного поведения? Может быть, данные передаются по крупицам? Memcache имеет опцию chunk_size
, по умолчанию она установлена на 8192 (байт, я полагаю?
Любая помощь очень ценится!
Ура!
P.s. тэг memcached должен быть memcache, но я не могу выбрать эту опцию ..
Обновление
Проблема не имеет отношения к memcache. По какой-то причине мои данные меняются, пока они отправляются снова. В результате получается недопустимый HTML, который по какой-то причине не помещается в кэш и не отображается в моих выходных данных (по почте самому себе), но когда я вывожу результат (используя success: во втором вызове) в другой DIV, я вижу «искаженный» вывод ...