Кэш приложения HTML5 с Safari, из-за которого кросс-сайт css не загружается

У меня возникла проблема с одной из моих веб-страниц, которая была изменена для использования функции кэширования приложений HTML5. Safari блокирует мои кросс-сайтовые css-файлы, когда на странице включен кэш приложений. Страница http://www.ericperrets.info/fast.html загружает ряд изображений/css файлы с моего сервера и несколько файлов css с URL-адреса/серверов Google. Ниже приведено содержимое файла epi.appcache.

CACHE MANIFEST
#v2

CACHE:
default.css
/images/bg.gif
/images/bg2.gif
/images/external.png
/images/logo.gif
/images/mail_48.png
/images/meme.jpg
/images/pdficon.gif
/images/telephone_32.png
/favicon.ico
/js/dojo/dojo/dojo.js

NETWORK:
Resume%20-%20Eric%20Perret.pdf
index.html

Это работает, когда страница загружается в Firefox, но когда я пытаюсь загрузить ее в Safari, она блокирует вызовы http://fonts.googleapis.com/css?family=Reenie%20Beanie&v1 и http://fonts.googleapis.com/css?family=Candal&v1 заблокированы сообщением

URL-адрес не может быть показан

Не уверен, почему это происходит.


person Eric    schedule 17.06.2011    source источник
comment
Оба упомянутых файла имеют приватный Cache-Control, что означает, что он должен кэшироваться только в браузере пользователя (в отличие от общедоступных прокси и т. д.). Может ли это иметь какое-то отношение к вашей проблеме?   -  person Jonas G. Drange    schedule 21.06.2011
comment
@Jonas, не знаю, почему Google использует Cache-Controle: private для своих файлов CSS и «Cache-Controle: public» для своих шрифтов, но это не было проблемой с моим сайтом. Это были более длинные строки, о которых я прямо не говорил, что весь остальной http-контент должен поступать из сети.   -  person Eric    schedule 24.06.2011
comment
Они используют частный кеш-контроль, потому что хотят обслуживать разные браузеры с разными файлами css. Прокси должны использовать кешированный файл для отправки другим пользователям, возможно, с другими браузерами.   -  person Gerben    schedule 18.07.2011


Ответы (1)


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

Поэтому, когда Safari, который, по моему опыту, следует стандарту AppCache немного более строго, чем Firefox, видит запрос веб-адреса, которого нет в AppCache, он не разрешает доступ.

Чтобы обойти это, вы можете добавить ресурсы либо в раздел кеша, либо в раздел сети. На мой взгляд, лучшим вариантом является использование подстановочного знака «*» в разделе сети, чтобы гарантировать, что запросы не будут заблокированы.

NETWORK:
*
http://*
https://*
person christiangeek    schedule 23.06.2011
comment
Это отлично сработало для меня. В итоге я использовал... CACHE MANIFEST #v3 CACHE: /default.css /images/bg.gif /images/bg2.gif /images/external.png /images/logo.gif /images/mail_48.png /images/meme.jpg /images/pdficon.gif /images/telephone_32.png /favicon.ico /js/dojo/dojo/dojo.js NETWORK: /Resume%20-%20Eric%20Perret.pdf /index.html * http://* https://* - person Eric; 24.06.2011