OpenLayers: кэширование

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
oneDBA
Новоприбывший
Сообщения: 2
Зарегистрирован: 07 окт 2009, 11:43
Репутация: 0

OpenLayers: кэширование

Сообщение oneDBA » 07 окт 2009, 11:47

Здравствуйте.

Как можно решить следующую задачу?

Создаем слой TMS. Сервер в завимости от запрашиваемой в url (например, запросом "http://example.com?b=00000033,00000032,03", в котором первые два числа обозначают нужную область, а третье уровень зума.). картой области возвращает картинки, которые заполняют видимую область карты.
При сдвиге карты захватом и перемещением карты левой кнопкой мыши, подгружаются с сервера новые картинки на карту. При частых сдвигах карты следует кэшировать картинки в браузере, для увеличения быстродействия.
Для реализации кэша, на сервере в сессии храниться массив, ключем которого является запрашиваемая область, а значением - время последнего возвращения картинки. В случае, если не позднее времени t для определенной области повторно запрашивалась картинка отправляется http-заголовок: "HTTP/1.1 304 Not Modified". При перезагрузке карты кэш очищается.

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

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: OpenLayers: кэширование

Сообщение Mavka » 07 окт 2009, 11:58

Записывать информацию в массив только когда картинка будет полностью загружена и положена в кэш.
лангольеры под окном жрали время ом-ном-ном

oneDBA
Новоприбывший
Сообщения: 2
Зарегистрирован: 07 окт 2009, 11:43
Репутация: 0

Re: OpenLayers: кэширование

Сообщение oneDBA » 07 окт 2009, 13:29

Mavka писал(а):Записывать информацию в массив только когда картинка будет полностью загружена и положена в кэш.
Спасибо. Попробую воспользоваться обработчиком события loadend класса OpenLayers. Layer для этого.

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя