Может Google Maps API JavaScript кэшироваться?

Просто любопытный, ли Google Maps API v3 javascript кэшироваться на локальном сервере?

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

Я даже готов выполнить задание крона для обновления файла JavaScript время от времени.

Спасибо за любой вход.

11
задан Christian Marcus Fletcher 7 September 2016 в 06:46
поделиться

3 ответа

Невозможно "как есть".

Когда вы запрашиваете скрипт у Google, они посылают заголовки вдоль скрипта, и эти заголовки содержат директиву "no-cache".

Поэтому, если вы хотите, чтобы они были кэшируемыми, вы должны создать прокси. Вместо того, чтобы направлять скрипт src в Google, вы направляете его на ваш сервер. Затем ваш сервер сделает вызов в Google и отправит ответ обратно клиенту.

Таким образом, вы получите контроль над заголовком HTTP и кэшированием. Вы можете делать кэширование на содержимом скрипта, а также делать меньше подключений к Google.

Я бы не советовал кому-то делать это на производственном или критически важном для миссии сайте. Все Google API часто обновляются и более или менее связаны друг с другом. Если что-то выходит из-под синхронизации с чем-то другим, у вас трудно отследить ошибку.

Надеюсь, это поможет.

EDIT: Я слышал, что вы помещаете свои скрипты в раздел HEAD вашего документа. Может быть, это задевает ваше "воспринимаемое" время загрузки страницы. Попробуйте перенести загрузку скрипта непосредственно перед тегом и инициализацией карты в событии onload страницы.

Mike

.
15
ответ дан 3 December 2019 в 05:12
поделиться

ИМХО ты не можешь его кэшировать. API-скрипт вызывает объекты на сервере Google. В крайнем случае, вы можете захватить результаты и кэшировать их как изображения (но затем вы теряете интерактивность).

Если бы можно было кэшировать результаты GMap, люди просто кэшировали бы всю БД Google локально, и я не думаю, что это является частью пользовательского соглашения ;).

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

.
3
ответ дан 3 December 2019 в 05:12
поделиться

Опцией, которая не позволила бы вам нарушить Условия обслуживания Google, было бы сохранение локального кэша плиток OpenStreetMap со скриптом OpenLayers для их просмотра. В основном, используя свободные данные для создания своего собственного картографического сервера.

Если есть определенные интересные моменты, которые важны для вашей интрасети, вы можете убедиться, что они находятся в OpenStreetMap и настроить рендеринг-сервер самостоятельно с теми функциями, которые вам нужны. В конце концов, наложение каждой школы в районе на некоторые png займёт больше работы, чем просто отображение png, сделанного с этими школами.

Также потребуется гораздо меньше времени на медленное внешнее соединение, если ваш картографический сервер получит/сгенерирует плитки в выходные вместо того, чтобы постоянно нажимать на Google Map API.

.
0
ответ дан 3 December 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: