13 3,391 Posted February 1, 2020 Если вам известны моды, которые запрашивают данные с сервера 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. Кешируйте полученные файлы. В последнее время распространены моды, которые бессмысленно запрашивают файлы слишком часто, вместо того, чтобы сохранить и в дальнейшем использовать сохранённые версии, обновляя их с сервера только по мере необходимости. Поскольку данные в файлах на сервере обновляются всего один раз в день, вполне достаточно запрашивать файлы также раз в день. Это производительнее: локальный файл всегда доступен многократно быстрее. Это надёжнее: локальный файл можно использовать не только между обновлениями, но и в качестве фоллбека в случае недоступности сервера. 7 Quote Share this post Link to post Short link Share on other sites
ShuraBB 1,151 #476437 Posted February 2, 2020 15 часов назад, Mr 13 сказал: обновляя их с сервера только по мере необходимости Запросить текущую версию нужного файла возможно? Quote Share this post Link to post Short link Share on other sites
13 3,391 #476488 Posted February 2, 2020 @ShuraBB можно делать условные запросы, при которых сервер вернёт новый файл, если он изменился, либо просто сообщит, что файл не изменился. Есть 2 варианта: Отправлять с запросом дату последнего изменения файла в заголовке If-Modified-Since: Sun, 02 Feb 2020 14:00:06 GMT Если отправленная дата позже серверной, придёт короткий ответ с кодом 304 (файл не изменён). Если отправленная дата раньше даты изменения файла на сервере, в ответе придёт новый файл. При получении файла сохранять значение заголовка ETag из ответа и подставлять его в заголовок If-None-Match при последующих запросах этого файла. Если отправленное значение совпадает с тем, которое присвоено файлу сервером, придёт короткий ответ с кодом 304 (файл не изменён). Если значения отличаются, придёт обновлённый файл. Quote Share this post Link to post Short link Share on other sites
ShuraBB 1,151 #476509 Posted February 2, 2020 2 часа назад, Mr 13 сказал: Есть 2 варианта А вы уверены что urllib wot клиента умеет в эти заголовки? Quote Share this post Link to post Short link Share on other sites
night_dragon_on 5,601 #476517 Posted February 2, 2020 (edited) 3 часа назад, Mr 13 сказал: При получении файла сохранять значение заголовка ETag из ответа и подставлять его в заголовок If-None-Match при последующих запросах этого файла. В данный момент сервер поддерживает данный запрос? Edited February 2, 2020 by night_dragon_on Очистка, не актуально ... Quote Share this post Link to post Short link Share on other sites
yepev 259 #476518 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 Share this post Link to post Short link Share on other sites
night_dragon_on 5,601 #476519 Posted February 2, 2020 6 минут назад, yepev сказал: код неправильный. Data это не Header. http://python-for-web.blogspot.com/2014/06/urllib2-python.html Quote Share this post Link to post Short link Share on other sites
yepev 259 #476520 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 Share this post Link to post Short link Share on other sites
night_dragon_on 5,601 #476523 Posted February 2, 2020 15 минут назад, yepev сказал: Тебе нужно добавить Header к GET запросу. Это делается третьим параметром в Request или методом Request.add_header(key, val) Хотя да, не туда смотрел. Но даже с get запросом сервер отдал сам *.json файл, хотя по идее должен был вернуть код 304. Видимо пора спать идти, утро вечера мудренее. Quote Share this post Link to post Short link Share on other sites
yepev 259 #476524 Posted February 2, 2020 @night_dragon_on у меня сейчас нет питона, так что проверил в Dev Tools. Работает: Код 304 вместо файла, как надо. Quote Share this post Link to post Short link Share on other sites
ShuraBB 1,151 #476541 Posted February 3, 2020 10 часов назад, yepev сказал: https://docs.python.org/2/library/urllib2.html#urllib2.Request Вопрос не в том как это сделать на питоне, вопрос в том чтобы это работало в WOT клиенте ;-) А то уже были прецеденты. Quote Share this post Link to post Short link Share on other sites