powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [MiniM] Как можно ускорить XMLHttpRequest?
21 сообщений из 21, страница 1 из 1
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119380
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно 600 миллисекунд уходит на то чтобы принять из CACHE (MINIM)
простую текстовую строку длиной до 1000 байт через XMLHttpRequest.

Как можно ускорить?var xhr=new XMLHttpRequest();

xhr.open('GET',mConnect,false); 
xhr.send(null); 
res=xhr.responseText;
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119438
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9,

От задачи зависит. Если это передача большого объёма данных, то хороший эффект может дать собственная буферизация в строку длиной ~ 32K-128K.
Т.е. "классический" код:writerecord(record)
  write record
  quitможет работать в 1.5-2 раза медленнее, чем код, использующий собственную буферизацию:writerecord(record,buffer)
  s buffer=$g(buffer),lsum=$l(buffer)+$l(record)
  if lsum<$$$BUFFERSIZE set buffer=buffer_record quit
  if lsum'>$$$MAXSTRLEN write buffer_record set buffer="" quit
  write buffer,record set buffer=""
  quitФайл открывался в обоих случаях с опциями "WU". Лишние системные вызовы оказались значительно дороже лишних M-команд (в разумных пределах, конечно). Думаю, что при обмене через сокет можно ожидать аналогичного эффекта.
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119462
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9 ,

Как ускорить работу объекта XmlHttpRequest

PS: вебсокеты пробовали?
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119532
Timur Safin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Accept-Encoding: gzip, deflate

Например
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119551
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timur SafinAccept-Encoding: gzip, deflate

Напримертогда наверно иClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ]
{
  s %response.GzipOutput=1
  q 1
}
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119577
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9Примерно 600 миллисекунд уходит на то чтобы принять из CACHE (MINIM)
простую текстовую строку длиной до 1000 байт через XMLHttpRequest.
Когда речь о производительности запросов, здесь очень и очень много факторов которые могут на это влиять
сразу нужно вспоминать, о том что вы не первый кто об этом задумался, и у нас уже есть много инструментов позволяющих это мерять.

со стороны браузера, есть Navigation Timing API, тут есть примеры как мерить

потом, можно померить сколько времени было затрачено именно на стороне Cache. Далее, вместе с веб-сервером, а вместе с сетевыми задержками это уже браузер
можно уще воспользоваться cURL, чтобы в консоли смотреть время выполнения запросов.
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119609
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за наводки !

(правда МИНИМ не имеет всех упомянутых системных программ)

длинные строки проходят нормально -
при длине более 6000 задержка не 600,
а 60 примерно на самых тупых компах,
на более продвинутых - около 5 миллисекунд.

проблема только с короткими строками (!)
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119617
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9на то чтобы принять из CACHE (MINIM)Так Caché или MINIM?
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119716
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

MUMPS код один и тот же и в CACHE и в MINIM
(кроме команд OPEN и USE ).

в обоих случаях КОРОТКИЕ строки передаются клиенту
намного медленнее (600 ms) чем длинные (5...60 ms) .

клиенты : Windows-8, IE-10 , IE-11 , 32 или 64 бит.


Строки просто читаются из глобалов.
затем
write webTitle,str,*-3

в заголовке webTitle
среди прочего указана и длина строки.
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119731
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9 ,

Решение проблемы может отличаться в Caché и MiniM.
Поэтому и хотелось уточнить, что для Вас приоритетней, учитываяMX-9правда МИНИМ не имеет всех упомянутых системных программ
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119756
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

и то, и то,

и можно без хлеба :)
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119791
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9write webTitle,str,*-3
в заголовке webTitle
среди прочего указана и длина строки.Такое впечатление, что срабатывает алгоритм Nagle : "поступило слишком мало данных, подождём, когда капнут ещё".
Не действует ли опция /NODELAY=0? По умолчанию в Cache /NODELAY=1, вообще-то. См. OPEN and USE Command Keywords for TCP Devices

Если нет, м.б. стоит попробовать изменить алгоритм обмена так, чтобы (как уже говорил) предварительно накапливать строки в собственном буфере приемлемой длины, и выводить в сокет уже его.
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119808
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,

да - очень похоже
и в интернете гутарят про то же.

вопрос - почему "win - составитель tcp-поездов" игнорит установку по умолчанию в CACHE ?

как временная мера - добавляю коротким строкам 6000 нулей - CACHE летает :)
но это так - шоферские байки
надо сделать правильно.

агрегировать несколько ответов не могу - клиенту надо здесь и сейчас -
он, например, вводит данные со сложной синхронной многофакторной проверкой.

все что можно сагрегировать - уже сагрегировано до нас... :)
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39119828
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9,

попробуй Gaming Tweak - Disable Nagle's algorithm (сам не пробовал, за последствия не отвечаю ))).
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39120198
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9вопрос - почему "win - составитель tcp-поездов" игнорит установку по умолчанию в CACHE ?Возможно дело в версии Caché (и/или CSP-Gateway)?

Проверил в Caché 2016.1 скорость между двумя физическими машинами по локальной сети: маленькие пакеты летают (~5ms).
Код REST-приложенияClass sqlru.rest Extends %CSP.REST
{

Parameter CHARSET = "UTF-8";

Parameter CONTENTTYPE = {..#CONTENTTYPETEXT};

Parameter CONVERTINPUTSTREAM = {$$$YES};

Parameter UseSession As BOOLEAN = {$$$YES};

XData UrlMap [ XMLNamespace = " http://www.intersystems.com/urlmap"  ]
{
<Routes>
<Route Url="/test/:i" Method="GET" Call="Test"/>  
<Route Url="/" Method="GET" Call="MainPage"/>  
 </Routes>
}

ClassMethod Test(i) As %Status
{
  w "asd"_i
  q $$$OK
}

ClassMethod MainPage() As %Status
{
  #dim %response As %CSP.Response
  s %response.ContentType="text/html"
  &html<<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <script type="text/javascript">
    function test()
    {
      var xhr=new XMLHttpRequest();

      var res;
      
      var N=100;
      var start=new Date();
      
      for(var i=0;i<N;i++) {
        xhr.open('GET','test/'+i,false); 
        xhr.send();
        res=xhr.responseText;  
      }    
      alert('Последний результат = '+res+'\nВремя одной итерации ~ '+((new Date()-start)/N).toPrecision(4)+' мс.');
    }
  </script>
  </head>
  <body><button onclick="test()">Запустить</button></body>
</html>>
  q $$$OK
}

}

Результат:

Код: plaintext
1.
Последний результат = asd99
Время одной итерации ~ 4.840 мс.
При больших пакетах w "asd"_$tr($j("",6000)," ","0")_i скорость понижается ненамного
Код: plaintext
Время одной итерации ~ 7.500 мс.

PS: реестр не менялся на обеих машинах.
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39120249
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, включить/отключить алгоритм Nagle можно и в самом CSP шлюзе:CSP.ini
Код: plaintext
1.
2.
3.
...
[SYSTEM]
Nagle_Algorithm=Disabled (или Enabled)
...
А посмотреть его текущее состояние можно в CSP.log.
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39120454
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitКстати, включить/отключить алгоритм Nagle можно и в самом CSP шлюзе:В версии 2015.1 в CSP.ini такого параметра не вижу, при этом в CSP.log: Nagle_Algorithm=Disabled.
Судя по всему, это умолчание, к тому же, не найдя описания, рискну предположить, что он, как и другие параметры СSP-шлюза, влияет на его поведение как клиента по отношению к Cache.
А MX-9 явно испытывает проблемы на стороне сервера.

P.S. О CSP-шлюзе
Версия: 2015.1.2.607.0.15502
№ билда шлюза: 1501.1472
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39120524
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovВ версии 2015.1 в CSP.ini такого параметра не вижу, при этом в CSP.log: Nagle_Algorithm=Disabled.
Судя по всему, это умолчаниеИменно так.
Alexey Maslovрискну предположить, что он, как и другие параметры СSP-шлюза, влияет на его поведение как клиента по отношению к Cache.Если CSP-шлюз и Caché на разных машинах, то может иметь влияние.
Alexey MaslovА MX-9 явно испытывает проблемы на стороне сервера.Кстати, у меня и с включённым Nagle_Algorithm=Enabled результаты хорошие.

PS: то что проседание наблюдается помимо Caché и в MiniM, наводит на мысль, что дело не в настройках СУБД.
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39120672
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitPS: то что проседание наблюдается помимо Caché и в MiniM, наводит на мысль, что дело не в настройках СУБД....а также не в шлюзе, т.к. MiniM его не использует.
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39120700
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov.а также не в шлюзе, т.к. MiniM его не использует.Да.

PS: разнёс браузер+Caché и Apache+CSP-Gateway по разным машинам: скорость хорошая вне зависимости от Nagle_Algorithm и размера пакета (~14 мс.).
...
Рейтинг: 0 / 0
[MiniM] Как можно ускорить XMLHttpRequest?
    #39128850
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovservitPS: то что проседание наблюдается помимо Caché и в MiniM, наводит на мысль, что дело не в настройках СУБД....а также не в шлюзе, т.к. MiniM его не использует.

Заработало !

программить надо "тщательнЕе".
из-за некорректного перехвата ошибок иногда job закрывался аварийно
и без соответствующих манипуляций.
Взамен открывался новый, получал по эстафете почти все, что надо,
поэтому программист на отладке обрыва не замечал.
Браузер, похоже, реагировал на разрывы снижением скорости.

Спасибо всем Гуру за обсуждение !
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [MiniM] Как можно ускорить XMLHttpRequest?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]