Кэшируйте весь файл jquery.min.js в локальном хранилище HTML5 - PullRequest
2 голосов
/ 30 июня 2011

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

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

Я могу хранить весь CSS в локальном хранилище, но не в Jquery или Jquery UI.

В любом случае, я знаю, что люди попытаются заставить меня использовать манифест кэша .... и т. Д. Но я ищу способ хранения библиотеки Jquery в локальном хранилище. (Это цель).

Есть идеи?

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

localStorage.setItem("name", "(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f('<'+a+'>').appendTo('body'),d=b.css('display');b.remove();if(d==='none'||d===''){ck||(ck=c.createElement('iframe'),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write('<!doctype><html><body></body>"); 

Что сохраняется при просмотре:

(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f('<'+a+'>').appendTo('body'),d=b.css('display');b.remove();if(d==='none'||d===''){ck||(ck=c.createElement('iframe'),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write(' 

Не все сохраняет. Могу ли я использовать parsefloat () или что-то? Как бы я это сделал, если бы это сработало?

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

Ответы [ 3 ]

3 голосов
/ 22 июля 2012

Это было отличное упражнение для локального хранилища HTML5, но разве ваш веб-сервер не должен просто ответить HTTP 304 (не изменен)? Почти все веб-серверы с 1998 года поддерживают эту функцию. Было бы намного быстрее, если бы ваш сервер отвечал простым 304, чем писать кучу javascript для загрузки jQuery в локальное хранилище и из него.

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

3 голосов
/ 16 ноября 2011

Работает нормально, если вы кодируете файл сценария Base64 перед сохранением его в localalstorage. В приведенном ниже примере я пропустил файл jQuery, но в демоверсии закодирован весь jQuery 1.7.

Я использовал следующий сайт для кодирования всего файла в одну строку (большинство разбивают его на куски): http://textmechanic.co/ASCII-Hex-Unicode-Base64-Converter.html?type=text

Демо: http://jsfiddle.net/ThinkingStiff/ZMAKn

HTML:

<div></div>

Сценарий:

var jquery = '<Base64 encoded file>';
var result = 'jQuery: ' + ( typeof $ != 'undefined' ) + '<br />';

window.localStorage.setItem( 'jquery', jquery );
jquery = '';
jquery = window.localStorage.getItem( 'jquery' );

eval( atob( jquery ) );

result += 'jQuery: ' + ( typeof $ != 'undefined' ) + '<br />';

$( 'div' ).html( result ); //this works, so jQuery loaded

window.localStorage.removeItem( 'jquery' );

Выход:

jQuery: false
jQuery: true
0 голосов
/ 17 апреля 2013

Я согласен с Cyan Lite.Для этого вам нужно использовать кэширование в браузере, а не тратить время на его кодирование.

Если вы не хотите использовать CDN, как предложил Cyan, вы можете легко включить кэширование на своем сервере: https://developers.google.com/speed/docs/best-practices/caching#LeverageBrowserCaching

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