13 Posted February 1, 2020 Share Posted February 1, 2020 Если вам известны моды, которые запрашивают данные с сервера static.modxvm.com, пожалуйста, отправьте ссылку на эту тему их разработчикам. 1. Запрашивайте файлы в gzip. При запросах json или csv файлов с сервера static.modxvm.com добавляйте расширение .gz, например wn8exp.json.gz вместо wn8exp.json Это значительно уменьшает трафик и длительность загрузки файлов с сервера. Разница на примере файла с данными за сегодняшний день: без сжатия: 66 630 байт gzip: 13 153 байт Сжатый вариант компактнее как минимум в 5 раз. Для игроков с невысокой скоростью подключения эта разница весьма значительна, особенно, если запрашиваются несколько файлов для разных задач. 2. Кешируйте полученные файлы. В последнее время распространены моды, которые бессмысленно запрашивают файлы слишком часто, вместо того, чтобы сохранить и в дальнейшем использовать сохранённые версии, обновляя их с сервера только по мере необходимости. Поскольку данные в файлах на сервере обновляются всего один раз в день, вполне достаточно запрашивать файлы также раз в день. Это производительнее: локальный файл всегда доступен многократно быстрее. Это надёжнее: локальный файл можно использовать не только между обновлениями, но и в качестве фоллбека в случае недоступности сервера. 7 @ Quote Link to comment Short link Share on other sites More sharing options...
ShuraBB Posted February 2, 2020 Share Posted February 2, 2020 15 часов назад, Mr 13 сказал: обновляя их с сервера только по мере необходимости Запросить текущую версию нужного файла возможно? @ Quote Link to comment Short link Share on other sites More sharing options...
13 Posted February 2, 2020 Author Share Posted February 2, 2020 @ShuraBB можно делать условные запросы, при которых сервер вернёт новый файл, если он изменился, либо просто сообщит, что файл не изменился. Есть 2 варианта: Отправлять с запросом дату последнего изменения файла в заголовке If-Modified-Since: Sun, 02 Feb 2020 14:00:06 GMT Если отправленная дата позже серверной, придёт короткий ответ с кодом 304 (файл не изменён). Если отправленная дата раньше даты изменения файла на сервере, в ответе придёт новый файл. При получении файла сохранять значение заголовка ETag из ответа и подставлять его в заголовок If-None-Match при последующих запросах этого файла. Если отправленное значение совпадает с тем, которое присвоено файлу сервером, придёт короткий ответ с кодом 304 (файл не изменён). Если значения отличаются, придёт обновлённый файл. @ Quote Link to comment Short link Share on other sites More sharing options...
ShuraBB Posted February 2, 2020 Share Posted February 2, 2020 2 часа назад, Mr 13 сказал: Есть 2 варианта А вы уверены что urllib wot клиента умеет в эти заголовки? @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted February 2, 2020 Share Posted February 2, 2020 (edited) 3 часа назад, Mr 13 сказал: При получении файла сохранять значение заголовка ETag из ответа и подставлять его в заголовок If-None-Match при последующих запросах этого файла. В данный момент сервер поддерживает данный запрос? Edited February 2, 2020 by night_dragon_on Очистка, не актуально ... @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted February 2, 2020 Share Posted February 2, 2020 (edited) @night_dragon_on, @ShuraBB https://docs.python.org/2/library/urllib2.html#urllib2.Request https://docs.python.org/2/library/urllib2.html#urllib2.Request.add_header https://docs.python.org/2/library/urllib2.html#examples https://stackoverflow.com/questions/385262/how-do-i-send-a-custom-header-with-urllib2-in-a-http-request @night_dragon_on код неправильный. Data это не Header. Edited February 2, 2020 by yepev @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted February 2, 2020 Share Posted February 2, 2020 6 минут назад, yepev сказал: код неправильный. Data это не Header. http://python-for-web.blogspot.com/2014/06/urllib2-python.html @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted February 2, 2020 Share Posted February 2, 2020 (edited) @night_dragon_on зачем мне это? Я скинул тебе ссылку на доку, где показано как сделать правильно. Добавляя второй параметр Data ты меняешь тип запроса с GET на POST, а не добавляешь заголовок. Тебе нужно добавить Header к GET запросу. Это делается третьим параметром в Request или методом Request.add_header(key, val) Edited February 2, 2020 by yepev @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted February 2, 2020 Share Posted February 2, 2020 15 минут назад, yepev сказал: Тебе нужно добавить Header к GET запросу. Это делается третьим параметром в Request или методом Request.add_header(key, val) Хотя да, не туда смотрел. Но даже с get запросом сервер отдал сам *.json файл, хотя по идее должен был вернуть код 304. Видимо пора спать идти, утро вечера мудренее. @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted February 2, 2020 Share Posted February 2, 2020 @night_dragon_on у меня сейчас нет питона, так что проверил в Dev Tools. Работает: Код 304 вместо файла, как надо. @ Quote Link to comment Short link Share on other sites More sharing options...
ShuraBB Posted February 3, 2020 Share Posted February 3, 2020 10 часов назад, yepev сказал: https://docs.python.org/2/library/urllib2.html#urllib2.Request Вопрос не в том как это сделать на питоне, вопрос в том чтобы это работало в WOT клиенте ;-) А то уже были прецеденты. @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.