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