Jump to content
Korean Random
Mr 13

Сторонним разработчикам: оптимизация запросов к static.modxvm.com

Recommended Posts

Если вам известны моды, которые запрашивают данные с сервера static.modxvm.com, пожалуйста, отправьте ссылку на эту тему их разработчикам.

 


 

1. Поддерживайте gzip.

При запросах файлов с сервера static.modxvm.com отправляйте заголовок Accept-Encoding: gzip или сразу напрямую запрашивайте файл со сжатием gzip (добавляя расширение .gz, например wn8exp.json.gz вместо wn8exp.json)

Это значительно уменьшает трафик и скорость загрузки файлов с сервера.

Разница на примере файла с данными за сегодняшний день:

без сжатия: 66 630 байт
      gzip: 13 153 байт

Сжатый вариант компактнее как минимум в 5 раз.
 

2. Кешируйте полученные файлы.

В последнее время распространены моды, которые бессмысленно запрашивают файлы слишком часто, вместо того, чтобы сохранить и в дальнейшем использовать сохранённые версии, обновляя их с сервера только по мере необходимости.


Поскольку данные в файлах на сервере обновляются всего один раз в день, вполне достаточно запрашивать файлы также раз в день.

 

  • Это производительнее: локальный файл всегда доступен многократно быстрее.
  • Это надёжнее: локальный файл можно использовать не только между обновлениями, но и в качестве фоллбека в случае недоступности сервера.
  • Upvote 6

Share this post


Link to post

Short link
Share on other sites
15 часов назад, Mr 13 сказал:

обновляя их с сервера только по мере необходимости

Запросить текущую версию нужного файла возможно?

Share this post


Link to post

Short link
Share on other sites

@ShuraBB можно делать условные запросы, при которых сервер вернёт новый файл, если он изменился, либо просто сообщит, что файл не изменился.

Есть 2 варианта:

  1. Отправлять с запросом дату последнего изменения файла в заголовке If-Modified-Since: Sun, 02 Feb 2020 14:00:06 GMT
    Если отправленная дата позже серверной, придёт короткий ответ с кодом 304 (файл не изменён). Если отправленная дата раньше даты изменения файла на сервере, в ответе придёт новый файл.
  2. При получении файла сохранять значение заголовка ETag из ответа и подставлять его в заголовок If-None-Match при последующих запросах этого файла.
    Если отправленное значение совпадает с тем, которое присвоено файлу сервером, придёт короткий ответ с кодом 304 (файл не изменён). Если значения отличаются, придёт обновлённый файл.

Share this post


Link to post

Short link
Share on other sites
2 часа назад, Mr 13 сказал:

Есть 2 варианта

А вы уверены что urllib wot клиента умеет в эти заголовки?

Share this post


Link to post

Short link
Share on other sites
3 часа назад, Mr 13 сказал:

При получении файла сохранять значение заголовка ETag из ответа и подставлять его в заголовок If-None-Match при последующих запросах этого файла.

 

В данный момент сервер поддерживает данный запрос?

Edited by night_dragon_on
Очистка, не актуально ...

Share this post


Link to post

Short link
Share on other sites

@night_dragon_on зачем мне это? Я скинул тебе ссылку на доку, где показано как сделать правильно.

Добавляя второй параметр Data ты меняешь тип запроса с GET на POST, а не добавляешь заголовок.

Тебе нужно добавить Header к GET запросу. Это делается третьим параметром в Request или методом Request.add_header(key, val)

Edited by yepev

Share this post


Link to post

Short link
Share on other sites
15 минут назад, yepev сказал:

Тебе нужно добавить Header к GET запросу. Это делается третьим параметром в Request или методом Request.add_header(key, val)

 

Хотя да, не туда смотрел. Но даже с get запросом сервер отдал сам *.json файл, хотя по идее должен был вернуть код 304. Видимо пора спать идти, утро вечера мудренее.

Share this post


Link to post

Short link
Share on other sites

@night_dragon_on у меня сейчас нет питона, так что проверил в Dev Tools. Работает:


image.png.5580a07469f96197c284a82a10b1c139.png
 

Код 304 вместо файла, как надо.

Share this post


Link to post

Short link
Share on other sites
10 часов назад, yepev сказал:

Вопрос не в том как это сделать на питоне, вопрос в том чтобы это работало в WOT клиенте ;-) А то уже были прецеденты.

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...