Показать сообщение отдельно
  #3 (permalink)  
Старый 07.11.2010, 15:21
Интересующийся
Отправить личное сообщение для lliberty Посмотреть профиль Найти все сообщения от lliberty
 
Регистрация: 12.03.2009
Сообщений: 14

Тестил вчера, долго и упорно.
1. Время выполнения я замерял в PHP через microtime(), схематично так:
<?php
$tstart = microtime(1);

//<---
Коннект к базе, memcahced
Сам скрипт
//--->

$tend = microtime(1);
echo round(1000000*(tend-tstart));
?>

Полноценные запросы 7-10 мс (разумеется при условии что нет сложных выборок из базы, либо выборки закешированы).


А вот с POST не бред.
Сделал такой маленький тест, вместо полноценного скрипта, php-заглушка.
<?php
 echo 'test';
?>

Делаем к этому скрипту Ajax-запрос методом GET. Время отклика (firebug) 60-80мс.
Изменяем скрипт и делаем запрос методом POST. И, фантастика, время загрузки резко увеличивается до 140-180мс. нет никаких запросов к базе, скрипт не меняли (firebug показывает, что основное време тратится на "Ожидание", в то время как "DNS", "Подключение" и "Отправка" по нулям, "Загрузка" 3-5мс).

Далее, переделал 1 простой запрос (выборка 1 значения: обращение к memcached и к базе если нет в кеше) от клиента к серверу из POST в GET. Обработка данных такая же, а время загрузки ответа от сервера упало с 170мс до 70-90мс.

Далее, отказался от PHP. Написал небольшую fcgi-c++ программку (выборка 1 значения из таблицы). Запустил на сервере. Запросы POST к ней идут 150-300мс. GET запросы 65-100мс.


Цитата перевода статьи с developer.yahoo.com
Цитата:
Команда Yahoo! Mail обнаружила, что при использовании XMLHttpRequest, POST выполняется в браузерах как двухэтапный процесс: сначала отправляются заголовки, затем данные. Поэтому лучше использовать GET, который отправляет только один TCP-пакет (если только у Вас небольшое количество cookies). Максимальная длина URL в IE - 2K, так что, если Вы посылаете больше, чем 2 К данных, то Вы не сможете использовать GET.

Был обнаружен интересный побочный эффект: POST без отправки каких-либо данных, ведёт себя как GET. Согласно HTTP-спецификации, GET предназначен для получения информации, поэтому имеет смысл (семантически) использовать GET только тогда, когда Вы просто запрашиваете данные, а не передаёте их для хранения на стороне сервера.

Последний раз редактировалось lliberty, 07.11.2010 в 15:26.
Ответить с цитированием