Подтвердить что ты не робот

Можете ли вы хранить файлы JavaScript и CSS в localStorage для повышения производительности онлайн-приложения?

Я работаю над веб-приложением, которое очень похоже на собственное приложение для iOS и Android. Однако файлы Javascript (jQuery + мой собственный) и файл css довольно большие для использования в мобильных устройствах, что замедляет загрузку приложения, если у пользователя нет поддержки 3G.

Поэтому я начал думать о сохранении этих файлов в автономном режиме. Однако, помимо кэша. Манифест (который, насколько мне известно, срабатывает только тогда, когда нет подключения к Интернету для использования в автономном режиме), я не нашел пути к этому. То, что я идеально хотел бы иметь, это проверить, хранятся ли файлы в кэше/сохранены, а если нет, используйте их, а затем сохраните их в следующий раз.

Возможно ли это? Это сократит время загрузки моего приложения, поскольку сам индексный файл очень мал. Я все еще работаю над похудением файлов, оптимизируя, но это очень помогло бы тем временем.

EDIT:

Просто чтобы немного подробнее узнать, извините, если раньше я был неясен.

Я начал создавать этот webapp с помощью шаблона HTML5, а в моем файле .htaccess есть все заголовки файлов JS и CSS с датой истечения 1 года.

Но кажется, что открытие приложения с главного экрана iOS загружает файлы .js и .css каждый раз, как это было в случае, когда они не кэшируются. Открытие веб-сайта на рабочем столе или даже в веб-браузере iOS Safari, похоже, правильно кэширует файлы, так как изменения в Javascript и CSS отображаются только после ручного обновления страницы.

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

ИЗМЕНИТЬ 2:

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

Cache-Control max-age = 31536000, общедоступный Истекает Пт, 18 Май 2012 17:34:20 GMT
Vary Accept-Encoding, User-Agent
Content-Encoding gzip Keep-Alive timeout = 2, max = 98

4b9b3361

Ответ 2

Должно быть возможно заставить браузер кэшировать такие активы, как javascript (хотя в конечном итоге эти директивы могут быть перегружены пользователем, возможно, не о чем беспокоиться). Смотрите здесь для краш-курса по кешированию. В частности, см. Заголовок HTTP:

Cache-Control: public

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

Также убедитесь, что ваш javascript включен, и см. здесь для общих советов по ускорению процесса.

Ответ 3

iOS не будет кэшировать ресурсы за пределами 25k. localStorage должен работать.

Ответ 4

Я также пытался сделать это без везения. Кажется, единственный способ сделать это:

  • Использовать AppCache только для изображений
  • Все ваши CSS и JS встроенные на первой странице
  • Как только все будет загружено, попробуйте запустить JS script, чтобы вытащить каждый из скриптов в localStorage
  • Вы можете просмотреть их через файлы cookie, чтобы убедиться, что у пользователя есть самые современные копии.

Посмотрите http://sunpig.com/martin/archives/2011/05/21/considerations-for-caching-resources-in-localstorage.html на идеи по внедрению!

Я только на полпути, но он работает намного лучше, чем в зависимости от appCache.

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