+  HandyCache форум
|-+  Главная категория» Дополнения, плагины» GE.lua - расширение HC для кэширование Google Earth
Имя пользователя:
Пароль:
Страниц: 1 ... 3 4 [5] 6 7 ... 9   Вниз
  Отправить эту тему    Печать  
Автор Тема: GE.lua - расширение HC для кэширование Google Earth  (Прочитано 98885 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #80 : 19 июня 2009, 19:49:58 »

Дропать-то соединение кто будет - HC по таймауту? У гугля-то дропается сервером, и весьма быстро. Улыбка

HC тоже только 30 секунд ждет, как и гуглевый сервер...
Сообщить модератору   Записан
Parasite
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 66



« Ответ #81 : 19 июня 2009, 20:03:01 »

HC тоже только 30 секунд ждет, как и гуглевый сервер...
Это и есть ненужная задержка, лечащаяся явным указанием Connection:Close клиенту.
Дело-то в том, что скрипт ИМЕННО для ГЕ, и посему должен соответствовать не теоретически правильному (но в данном случае - неработающему) стандарту, а именно практическим запросам ГЕ (даже если они нестандарты и кривы как турецкая сабля). Connection:Close - давнишние грабли в работе с ГЕ, и с этим вряд ли нужно спорить, ибо это очевидный факт для тех, кто щщупал ГЕ чуть более чем наполовину.

Коллеги, предлагаю прекратить ломать копья. Скрипт ЗАРАБОТАЛ, и заработал у обоих кто сообщал о проблемах - а это главное.
Кому не нравится - могут самостоятельно подредактировать обратно, а то проблема-то на полушку, да и решенная уже - а обсуждения на пятак уже накреативили. Время теряем, а работа - стоит. Улыбка
« Последнее редактирование: 19 июня 2009, 20:08:13 от Parasite » Сообщить модератору   Записан
Михаил
Модератор
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #82 : 19 июня 2009, 20:12:02 »

Коллеги, предлагаю прекратить ломать копья.
Не вопрос. Просто попросил проверить первоначальный скрипт в суровых условиях с новой сборкой НС, а в ответ получил лишь заверения в его ошибочности, в чем не уверен.
Сообщить модератору   Записан
zed
Постоялец
***

Репутация: +4/-0
Offline Offline

Сообщений: 141


« Ответ #83 : 19 июня 2009, 21:33:25 »

Цитировать
Дело в том, что в ПЕРВОНАЧАЛЬНОМ скрипте вообще не было никакого указания - ни Keep-Alive, ни Close, и это и была ошибка.
Это не ошибка. Как уже отметил DenZzz - это правильное поведение в соответветствии со стандартом. Гугл об этом знает: от сервера GE ответы приходят без Connection: keep-alive.
Думаю, первоначальный скрипт правилен. А все проблемы исходили только от неправильного запроса POST. Parasite, проверь это, плиз, в своих сложных условиях.
Нет, все проблемы в скрипте. Как только обновил скрипт всё заработало. У меня проблем с GET в url небыло, да и версии новой у меня нет. Работает на HC 180.
Сообщить модератору   Записан
Parasite
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 66



« Ответ #84 : 19 июня 2009, 22:20:07 »

попросил проверить первоначальный скрипт в суровых условиях с новой сборкой НС, а в ответ
До "суровых условий" еще дойти надо. Таки ж рабочий день пока ж еще. Улыбка)
Приду домой, оторву от скрипта "Connection:Close", поставлю на ночь (HC уже новый).
Сообщить модератору   Записан
Михаил
Модератор
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #85 : 19 июня 2009, 22:41:09 »

Проблема, помню, была со скриптом, когда на сервере изменился файл dbRoot. В тот момент разобраться не успел. Что происходит при этом, кто-нибудь знает? Или у кого есть старый dbRoot подкиньте, плиз, сам попробую воспроизвести.
Сообщить модератору   Записан
Parasite
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 66



« Ответ #86 : 19 июня 2009, 23:25:52 »

на сервере изменился файл dbRoot.
Что происходит при этом, кто-нибудь знает?
А что за проблема? В чем заключается? Дбруты есть в ассортименте, но вряд ли проблема в них - они как сущности всегда одинаковые, разный только контент в них. Хидеры и прочая - одинаковые, исключая длину файла и таймштампы. Имхо нет разницы, с каким дбрутом отлавливать глюк, если таковой есть - в собственно контент не смотрит ни HC, ни скрипт.
Опишите глюк, плз.
Сообщить модератору   Записан
Михаил
Модератор
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #87 : 19 июня 2009, 23:32:15 »

Как только изменился dbRoot, поменялись версии файлов, и скрипт начал виснуть. Заняться этим сразу не было времени. А теперь воспроизвести не чем. В принципе, можно подождать следующего обновления. Когда-нибудь оно ж произойдет...
Сообщить модератору   Записан
zed
Постоялец
***

Репутация: +4/-0
Offline Offline

Сообщений: 141


« Ответ #88 : 20 июня 2009, 01:47:49 »

Цитировать
Как только изменился dbRoot, поменялись версии файлов, и скрипт начал виснуть.
Как только сменится dbRoot, гугл начнёт запрашивать q2 заново (с новой версией!) и ни в коем случае ему нельзя отдавать старые q2 из кэша - тогда он точно может начать виснуть и запрашивать несуществующие данные. Сейчас же, скрипт вроде не игнорирует версии файлов, а ищет в кэше файл с версией, строго соответствующий запросу? Если так, то проблем при обновлении dbRoot не будет.

P.S. Если вам нужно заставить гугл выдавать запросы со старой версией (чисто для эксперементов), то в любом hex-редакторе измените 7-й байт dbRoot-а на нужный номер. Только имейте в виду, что сервер гугла устаревших данных вам не отдаст.

Начал отслеживать точные даты обновлений на серверах гугла: Обновления данных на GoogleEarth Как видно, два дня назад (17.06.2009 17:31:08 GMT), как раз было очередное обновление...

Ещё, следует обратить внимание на то, что HC может модифицировать запрос клиента и дописывать If-Modified-Since:, и если дата будет не верна (скажем, будет текущая дата), то сервер отдаст 304 Not Modified, и загрузки dbRoot-а не произойдёт, хотя он уже может обновиться на сервере.
« Последнее редактирование: 20 июня 2009, 01:59:48 от zed » Сообщить модератору   Записан
Михаил
Модератор
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #89 : 20 июня 2009, 09:31:04 »

zed
Спасибо. Похоже, dbRoot, изменясь на сервере, не изменился у меня (срабатывал список Н). И дальше Гугл, видимо, отказывался выдавать старые версии тайлов. Убрал dbRoot из списка Н. Скрипт, получается, ни при чем.

Теперь надо определиться с выводимыми в мониторе сообщениями. Просьба новые предложения сначала выносить на обсуждение, а потом менять скрипт. Иначе будет неразбериха.
Сейчас предложения такие:
1. При взятии целиком из кэша в мониторе помимо "200 ОК From Cache" писать: 'GE: составной, всё из кэша'. Имхо, тут будет дублирование информации.
2. При взятии частично из сети, частично из кэша вместо 'GE: из сети и кэша' писать: 'GE: составной, из сети и кэша'. Тут тоже видится избыток, т.к. раз и из сети, и из кэша, то понятно, что составной.
3. При взятии полностью из сети вместо 'GE' писать: 'GE: составной, загружен полностью'. Здесь, вроде, тот факт, что файл составной, опять же виден из URL. Что загружен полностью, показывают 100%. Не отражено, что произведена запись в кэш. Может, писать 'GE: записан в кэш'?
Сообщить модератору   Записан
Parasite
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 66



« Ответ #90 : 20 июня 2009, 11:45:41 »

Приду домой, оторву от скрипта "Connection:Close", поставлю на ночь (HC уже новый).
Докладаюсь: пришел, оторвал, поставил ГЕ на ночь мееедленно вращаться на глубоком зуме, выключил монитор и пошел спать.
С утра ГЕ был найден скрэшившимся (аттач). Судя по логам последний запрос на ГЕ-урл был через 28 минут после начала процесса, и последние несколько десятков запросов брались именно полностью из кэша.

Вернул connection:close. 4 часа, полет нормальный.
Добавлено: 20 Июня 2009, 11:37:51

Теперь надо определиться с выводимыми в мониторе сообщениями.
Просьба обратить внимание: при взятии ОДИНОЧНОГО (не составного) тайла из кэша - скрипт не отрабатывает ситуацию с мессагой, и выводит такую же, как и при загрузке этого тайла с интернета (тогда как HC пишет верно). Может, стоит ввести отработку этой ситуации в скрипт - сугубо для красоты всего процесса? Улыбка
Аттач.


* Clipboard01.gif (21.56 Кб, 355x218 - просмотрено 36 раз.)

* Clipboard01.gif (15.77 Кб, 1817x55 - просмотрено 38 раз.)
Сообщить модератору   Записан
Михаил
Модератор
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #91 : 21 июня 2009, 10:37:16 »

С утра ГЕ был найден скрэшившимся
Спасибо. Обнаружилось, что НС не очищает память предыдущих запросов в рамках одного соединения, и в случае обработки тысяч запросов одним соединением через определенное время возникало переполнение. В новой сборке НС это исправлено.
Connection: close не давал идти в одном соединении нескольким запросам, и предотвращал такую ситуацию.
Цитировать
при взятии ОДИНОЧНОГО (не составного) тайла из кэша - скрипт не отрабатывает ситуацию с мессагой, и выводит такую же, как и при загрузке этого тайла с интернета (тогда как HC пишет верно). Может, стоит ввести отработку этой ситуации в скрипт - сугубо для красоты всего процесса?
В случае одиночного тайла скрипт не знает, есть ли файл в кэше и будет ли он обновлен. Он просто дает НС команду обработать это все самостоятельно. Можно написать так, что скрипт будет все это узнавать, но это лишние телодвижения, влияющие на производительность. СтОит?
« Последнее редактирование: 21 июня 2009, 10:44:01 от Михаил » Сообщить модератору   Записан
Parasite
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 66



« Ответ #92 : 22 июня 2009, 07:19:02 »

Спасибо. Обнаружилось, что НС не очищает память предыдущих запросов в рамках одного соединения, и в случае обработки тысяч запросов одним соединением через определенное время возникало переполнение. В новой сборке НС это исправлено.
Где взять новую сборку для тестирования?
Если же Вы про .182 - то именно с ней и тестировалось, да и крэш был в ГЕ, а не в HC (HC прекрасно работает с того момента и до сих пор, даже без перезапусков) . Как показывает практика, ГЕ прекрасно умеет валиться от кривых хидеров\ответов - никакой защиты в нем на эту тему нет, и банальный 404 HTML (текстом) ушедший в клиента в ответ на запрос тайла - может прекрасно его свалить.
Возможно, из-за переполнения в HC (?) оно разово отправило клиенту кривой ответ, от чего того и переклинило. Сниффером не проверял.

В случае одиночного тайла скрипт не знает, есть ли файл в кэше и будет ли он обновлен. Он просто дает НС команду обработать это все самостоятельно. Можно написать так, что скрипт будет все это узнавать, но это лишние телодвижения, влияющие на производительность. СтОит?
Имхо потери производительности в данном случае мизерны на фоне передачи собственно контента. В скрипт-то всё равно заходить, так что он в любом случае выполняется и время теряется...Имхо, рассмотрение потерь в данном случае - это экономия на спичках. Улыбка

PS: как проверить нагрузку на HC на десятке-другом вирт.машин? Насколько я понимаю, HC не обрабатывает более 5и пользователей одномоментно...?
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #93 : 22 июня 2009, 12:31:01 »

Цитировать
Где взять новую сборку для тестирования?
Там же, где предыдущую. Обновил.
Цитировать
как проверить нагрузку на HC на десятке-другом вирт.машин?
Не понял почему речь идет о виртуальных машинах?
Добавлено: 22 Июня 2009, 12:12:02

Чтобы проверить нагрузку можно от имени одного пользователя отправлять запросы с разных машин. Для этого в списке Пользователей нужно заполнить колонки Имя и Пароль, а колонку IP оставить пустой.
Сообщить модератору   Записан
Parasite
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 66



« Ответ #94 : 22 июня 2009, 12:48:41 »

Цитировать
Где взять новую сборку для тестирования?
Там же, где предыдущую. Обновил.
Понял. Попробую сегодня.

Цитировать
как проверить нагрузку на HC на десятке-другом вирт.машин?
Не понял почему речь идет о виртуальных машинах?
Хм. Потому что я ее завел мессагой ранее, наверное. Улыбка

Чтобы проверить нагрузку можно от имени одного пользователя отправлять запросы с разных машин. Для этого в списке Пользователей нужно заполнить колонки Имя и Пароль, а колонку IP оставить пустой.
В этом случае у меня получится прокси с авторизацией, так?
Желательно бы открытый, как при заполнении только имени и IP. Если я заполню только имя, не указывая ни пароля ни IP, и под одним именем будут множественные подключения с разных IP (вирт.машин) - это допустимая конфигурация?
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #95 : 22 июня 2009, 13:08:52 »

Если я заполню только имя, не указывая ни пароля ни IP, и под одним именем будут множественные подключения с разных IP (вирт.машин) - это допустимая конфигурация?

В настроках доступа в IP можно использовать диапазоны и маски. Тогда хоть вся сеть под одним именем может ходить.
Сообщить модератору   Записан
Parasite
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 66



« Ответ #96 : 22 июня 2009, 13:12:17 »

В настроках доступа в IP можно использовать диапазоны и маски. Тогда хоть вся сеть под одним именем может ходить.
О, отлично. То что нужно.
Сообщить модератору   Записан
Parasite
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 66



« Ответ #97 : 22 июня 2009, 16:41:56 »

О, отлично. То что нужно.
Господа, а подскажите пожалуйста, как средствами HC сделать следующее:
1. Файл. Качается, кладется в кэш.
2. С кэша запросившей стороне НЕ отдается - отдается только свежескачанное (каждый раз). В кэше лежит сугубо "для истории".
3. Каждый раз при обновлении данного файла на сервере - файл, который лежит в кэше, переименовывается по порядку, а на его место кладется обновленный.
В итоге будем иметь цепочку переименованных версий одного и того же файла в кэше.

Благодарю.

PS: нужно для dbRoot.v5 в свете сабжа.
Сообщить модератору   Записан
Михаил
Модератор
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #98 : 22 июня 2009, 20:44:32 »

Версия 0.06 от 22.06.2009
+  Лог ошибок (файл GE.log). Если он появится в папке со скриптом, подскажите мне, плиз
*  Учитывается состояние опции НС "Разрешить чтение из кэша"
*  Изменен текст сообщений в колонке "Правила" монитора
-  Слегка улучшено использование памяти

* Google Earth.rar (2.83 Кб - загружено 20 раз.)
Сообщить модератору   Записан
zed
Постоялец
***

Репутация: +4/-0
Offline Offline

Сообщений: 141


« Ответ #99 : 22 июня 2009, 21:45:09 »

В случае одиночного тайла скрипт не знает, есть ли файл в кэше и будет ли он обновлен. Он просто дает НС команду обработать это все самостоятельно. Можно написать так, что скрипт будет все это узнавать, но это лишние телодвижения, влияющие на производительность. СтОит?
Думаю стОит такую возможность включить в скрипт, но с возможностью закомментировать эту часть скрипта. Или наоборот: чтоб по-умолчанию было закомментировано, а тот, кому это надо, уже сам сообразит что сделать Улыбка

Кстати, а для чего в скрипте строчки:
Код:
-- if hc.url:find('geauth') then
-- hc.put_msg('ops')
-- local f=io.open(hc.get_cache_file_name(hc.url), 'rb')
-- hc.answer_body = f:read('*a')
-- f:close()
-- hc.answer_header = 'HTTP/1.1 200 OK\r\nContent-Type: application/octet-stream\r\nExpires: 0\r\n' ..
-- 'Cache-Control: no-cache,no-store\r\nSet-Cookie: PREF=ID=04c59454d2abb6b7:TM=1243710370:LM=1243710370:S=YdBzseUhw6Z4z3xu; ' ..
-- 'expires=Mon, 30-May-2011 19:06:10 GMT; path=/; domain=.google.com\r\nDate: Sat, 30 May 2009 19:06:10 GMT\r\nServer: btfe\r\n' ..
-- 'Content-Length: ' .. #hc.answer_body .. '\r\n\r\n'
-- return
-- end
Попытка закэшировать авторизацию? Обратите внимание на GoogleEarth.Local (выдаёт запрос на kh.hoogle.com) - ему можно скормить в том числе и авторизацию, и он будет работать "чисто локально". А с обычным клиентом такого не провернёшь;)

И почему-то опять, в скрипте, проигнорирована строчка Connection: Close?
Код:
hc.answer_header = 'HTTP/1.1 200 OK From Cache (HC)\r\nServer: HandyCache\r\nContent-Length: ' .. #hc.answer_body .. '\r\n\r\n'
и с этим скриптом гугл опять даёт клина Грустный Уже ж вроде всё обсудили и обошли эти грабли?

И ещё заметил, одиночный файл (q2-0-q.204) есть в кэше, но HC его всё равно загружает из инета, а скрипт при этом пишет, что "GE-из кэша"
Цитировать
22.06.2009/21:01:39 local/127.0.0.1 http://kh.google.com/flatfile?q2-0-q.204 119 119/209 100% 489 "200 OK" GE-из кэша, З.1
GE-из кэша   
З.1 (Запись в кэш): .*
И такое со всеми одиночными тайлами, которые есть в кэше...
« Последнее редактирование: 22 июня 2009, 22:14:01 от zed » Сообщить модератору   Записан
Страниц: 1 ... 3 4 [5] 6 7 ... 9   Вверх
  Отправить эту тему    Печать  

 
Перейти в: