Здравствуйте.
Как можно решить следующую задачу?
Создаем слой TMS. Сервер в завимости от запрашиваемой в url (например, запросом "http://example.com?b=00000033,00000032,03", в котором первые два числа обозначают нужную область, а третье уровень зума.). картой области возвращает картинки, которые заполняют видимую область карты.
При сдвиге карты захватом и перемещением карты левой кнопкой мыши, подгружаются с сервера новые картинки на карту. При частых сдвигах карты следует кэшировать картинки в браузере, для увеличения быстродействия.
Для реализации кэша, на сервере в сессии храниться массив, ключем которого является запрашиваемая область, а значением - время последнего возвращения картинки. В случае, если не позднее времени t для определенной области повторно запрашивалась картинка отправляется http-заголовок: "HTTP/1.1 304 Not Modified". При перезагрузке карты кэш очищается.
Но иногда возникает проблема при быстрых перемещениях по карте. Сдвинув карту в одно место, запрашивается у сервера картинка для новой области.
Сервер при соблюдении описанных выше условий возвращает картинку и записывает в массив в сессии соответствующие данные. Но если мы быстро переместимся в другую область на карты, то не дождавшись той картинки полностью, карта запрашивает новые. И когда мы второй раз окажемся в той области, то вернется 304-заголовк и браузер попытается взять картинку из кэша. Но т.к. он ее тогда не дождался, мы не видим нужный участок карты. Как можно решить проблему с потерянными участками карты?
OpenLayers: кэширование
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 07 окт 2009, 11:43
- Репутация: 0
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: OpenLayers: кэширование
Записывать информацию в массив только когда картинка будет полностью загружена и положена в кэш.
лангольеры под окном жрали время ом-ном-ном
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 07 окт 2009, 11:43
- Репутация: 0
Re: OpenLayers: кэширование
Спасибо. Попробую воспользоваться обработчиком события loadend класса OpenLayers. Layer для этого.Mavka писал(а):Записывать информацию в массив только когда картинка будет полностью загружена и положена в кэш.
Кто сейчас на конференции
Сейчас этот форум просматривают: Amazon [Bot] и 2 гостя