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

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

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

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

В этот момент я использовал манифест catch-all, как описано в соответствующем Dive Into HTML5 учебнике. Мой jQuery вытягивается аналогично тому, что определено в HTML5 Boilerplate.

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

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

Спасибо.

Ответы

Ответ 1

Собственно, вы можете написать свой манифест, который имеет ссылку на ваш CDN JQuery. Как и мой 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>

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

Ответ 2

проверяется, существует ли онлайн-jquery и если не загружается с локального ответа: Как загрузить локальные файлы script как резервные в случаях, когда 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 поддерживает условную загрузку, поэтому вы можете использовать ее для обнаружения и загрузки необходимого ресурса со следующим script (взятым из diveintohtml5):

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

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

Ответ 3

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

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

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

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