Есть ли способ использовать CDN (для jQuery) и иметь автономное веб-приложение (через манифесты HTML5)? - PullRequest
14 голосов
/ 10 марта 2011

Я начинаю смотреть на способность HTML5 разрешать автономные веб-приложения.

Некоторое время назад я обнаружил, что использование CDN хорошо работает для моих приложений, поэтому я придерживался их, в основном только для jQuery.

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

На данный момент я использую универсальный манифест, как описано в соответствующем руководстве Dive Into HTML5 . Мой jQuery похож на то, что определено в HTML5 Boilerplate .

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

Стоит ли пытаться пойти по этому пути, или я должен просто переключиться на обслуживание jQuery со своего сайта для всех запросов?

Спасибо.

Ответы [ 3 ]

7 голосов
/ 15 апреля 2012

На самом деле, вы можете написать свой манифест, содержащий ссылку на ваш jQuery CDN. Так же, как мои app.manifest:

CACHE MANIFEST
# 2012-01-20:v4

http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js

Это сегмент HTML:

<html manifest="app.manifest">
<head>
    ....
</head>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    ....
</body>
</html>

Это работает для меня.

3 голосов
/ 07 октября 2011

путь проверки, если онлайн-jquery существует, и если загрузка не из локальной, был дан ответ здесь: Как загрузить локальные файлы сценариев как запасной вариант в случаях, когда CDN заблокирован / недоступен?

где есть обсуждение и пара разных подходов

лично мне нравится подход html5boilerplate:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>

вы можете проверить, поддерживает ли браузер автономное кэширование с модернизатором http://www.modernizr.com/версия modernizer 2.0 поддерживает условную загрузку, поэтому вы можете использовать ее для обнаружения и загрузки необходимого ресурса с помощью следующего сценария (взятого из diveintohtml5):

    if (Modernizr.applicationcache) {
  // window.applicationCache is available!
} else {
  // no native support for offline :(
  // maybe try Gears or another third-party solution
}

, но, как я уже говорил, я предпочитаю метод html5boilerplate

0 голосов
/ 29 марта 2011

После нескольких недель размышлений у меня наконец появилась идея, когда я ехал домой сегодня вечером.

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

Или, возможно, это отдельная страница в приложении.Если они посещают его, он просто имеет элемент script, который извлекает ваш локальный файл jQuery.Затем страница либо возвращается назад, либо окно закрывается, в зависимости от приложения.(Я предполагаю, что добавление вашей локальной копии jQuery не будет работать на главной странице, если вы не удалили jQuery с существующей страницы (перезаписывая переменные или иным образом?).)

В зависимости от того, как работает браузеррешите сохранить автономный контент (файлы), может возникнуть проблема, если локальный файл jQuery загружается только на одной странице, и очень редко.Конечно, пока пользователь не находится в автономном режиме, в какой момент он вызывается (потенциально) на каждой странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...