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

JS как кэшировать переменную

То, что я хочу сделать, - это создать переменную, дать ей значение, закрыть и снова открыть окно, а также получить значение, которое я установил на последнем сеансе. Каков самый простой способ сделать это? Ответы JQuery приветствуются.

4b9b3361

Ответ 1

Используйте localStorage. Он постоянно работает над сеансами.

Запись:

localStorage['myKey'] = 'somestring'; // only strings

Чтение:

var myVar = localStorage['myKey'] || 'defaultValue';

Если вам нужно хранить сложные структуры, вы можете сериализовать их в JSON. Например:

Чтение:

var stored = localStorage['myKey'];
if (stored) myVar = JSON.parse(stored);
else myVar = {a:'test', b: [1, 2, 3]};

Запись:

localStorage['myKey'] = JSON.stringify(myVar);

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

Если вы не хотите быть совместимым с IE7, у вас нет причин использовать устаревшие и мелкие куки.

Ответ 3

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

Cookie * Создание и сохранение файлов cookie: *

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}

Функция, которая вернет указанный файл cookie:

function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x==c_name)
    {
    return unescape(y);
    }
  }
}

Отобразить приветственное сообщение, если файл cookie установлен

function checkCookie()
{
var username=getCookie("username");
  if (username!=null && username!="")
  {
  alert("Welcome again " + username);
  }
else 
  {
  username=prompt("Please enter your name:","");
  if (username!=null && username!="")
    {
    setCookie("username",username,365);
    }
  }
}

Вышеупомянутое решение сохраняет ценность через файлы cookie. Это довольно стандартный способ, не сохраняя значения на стороне сервера.

Jquery

Задайте значение для хранилища сеансов.

JavaScript:

$.sessionStorage( 'foo', {data:'bar'} );

Получить значение:

$.sessionStorage( 'foo', {data:'bar'} );

$.sessionStorage( 'foo' );Results:
{data:'bar'}

Локальное хранилище Теперь давайте взглянем на локальное хранилище. Допустим, например, у вас есть массив переменных, которые вы хотите сохранить. Вы можете сделать следующее:

var names=[];
names[0]=prompt("New name?");
localStorage['names']=JSON.stringify(names);

//...
var storedNames=JSON.parse(localStorage['names']);

Пример сервера с помощью ASP.NET

Добавление в Sesion

Session["FirstName"] = FirstNameTextBox.Text;
Session["LastName"] = LastNameTextBox.Text;

//При извлечении объекта из состояния сеанса, // соответствующий тип.

ArrayList stockPicks = (ArrayList)Session["StockPicks"];

// Write the modified stock picks list back to session state.
Session["StockPicks"] = stockPicks;

Я надеюсь, что ответили на ваш вопрос.

Ответ 4

проверить мой js lib для кеширования: https://github.com/hoangnd25/cacheJS

Мое сообщение в блоге: Новый способ кэширования данных с помощью Javascript

Особенности:

  • Удобно использовать массив в качестве ключа для сохранения кеша
  • Поддержка массива и localStorage
  • Очистить кеш по контексту (очистить все сообщения в блоге с помощью authorId = "abc" )
  • Без зависимости

Основное использование:

Сохранение кеша

cacheJS.set({blogId:1,type:'view'},'<h1>Blog 1</h1>');
cacheJS.set({blogId:2,type:'view'},'<h1>Blog 2</h1>', null, {author:'hoangnd'});
cacheJS.set({blogId:3,type:'view'},'<h1>Blog 3</h1>', 3600, {author:'hoangnd',categoryId:2});

Извлечение кеша:

cacheJS.get({blogId: 1,type: 'view'});

Очищающий кеш

cacheJS.removeByKey({blogId: 1,type: 'view'});
cacheJS.removeByKey({blogId: 2,type: 'view'});

cacheJS.removeByContext({author:'hoangnd'});

Поставщик переадресации

cacheJS.use('array');
cacheJS.use('array').set({blogId:1},'<h1>Blog 1</h1>')};