এইচটিএমএল 5 স্থানীয় স্টোরেজের আইটেমগুলির মেয়াদ কখন শেষ হয়?


336

লোকালস্টোরারে ডেটা সঞ্চয় করা (এইচটিএমএল 5-এ ডিওএম স্টোরেজের অংশ হিসাবে) কতক্ষণ পাওয়া যায়? আমি লোকালস্টোরেশনে যে ডেটা রেখেছি তার জন্য আমি একটি মেয়াদোত্তীকরণ সময় নির্ধারণ করতে পারি?


3
সম্ভব হলে লোকাল স্টোরেজ ব্যবহার করবেন না কারণ স্বয়ংক্রিয়ভাবে কখনই মেয়াদ শেষ হয় না, সেখানে আপনি সেশন স্টোরেজটি ব্যবহার করতে পারেন এটি বেশি পছন্দনীয়
ধর্মেন্দ্রসিংহ চুদাসামা

উত্তর:


215

মেয়াদোত্তীর্ণতা নির্দিষ্ট করা সম্ভব নয়। এটি সম্পূর্ণরূপে ব্যবহারকারীর হাতে।

https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

অবশ্যই, এটি সম্ভব যে আপনার অ্যাপ্লিকেশনটি ক্লায়েন্টের কাছে সঞ্চয় করে এমন কিছু পরে সেখানে নাও থাকতে পারে। ব্যবহারকারী স্পষ্টতই স্থানীয় সঞ্চয়স্থান থেকে মুক্তি পেতে পারে, বা ব্রাউজারটি স্থান বিবেচনায় যেতে পারে। আত্মরক্ষামূলকভাবে প্রোগ্রাম করা ভাল। সাধারণত শব্দটি কিছু ব্যবহারিক সংজ্ঞার ভিত্তিতে জিনিসগুলি "চিরকাল" থাকে "

সম্পাদনা করুন - স্পষ্টতই, আপনার নিজস্ব অ্যাপ্লিকেশনটি সক্রিয়ভাবে স্টাফগুলি সরাতে পারে যদি এটি সিদ্ধান্ত নেয় যে এটি খুব পুরানো। এটি হ'ল আপনি যা সঞ্চয় করেছেন তাতে স্পষ্টভাবে কিছু ধরণের টাইমস্ট্যাম্প অন্তর্ভুক্ত করতে পারেন এবং তারপরে তথ্যটি ফ্লাশ করা উচিত কিনা তা সিদ্ধান্ত নিতে এটি পরে ব্যবহার করুন।


1
সুতরাং ব্যবহারকারী এক বছরের পরে, যে ডেটা উপলব্ধ হচ্ছে তা গণনা করতে পারে? ডেভেলপার ডেটা উপলব্ধ থাকতে পারে যদি না ব্যবহারকারী এটি স্পষ্টভাবে মুছে ফেলে?
আন্দ্রেস রিওফ্রিও

6
@ অ্যান্ড্রেসরিওফ্রিয়ো আমি মজিলা বা মাইক্রোসফ্ট বা ডাব্লু 3 সি এর কাছ থেকে এমন কোনও ডকুমেন্টেশন খুঁজে পাই না যা কোনও ধরণের বাধ্যতামূলক মেয়াদোত্তীর্ণকরণের মেয়াদ উত্তীর্ণ করে। সুতরাং আমি মনে করি উত্তরটি হ্যাঁ, ব্যবহারকারীর এজেন্ট স্টোর করা জিনিস চিরকাল ধরে রাখার কথা, বা ব্যবহারকারী স্পষ্টভাবে অনুরোধ না করে এটি মুছে ফেলার জন্য (অথবা আপনার নিজের অ্যাপ্লিকেশন তার নিজস্ব জিনিস মুছে না দেওয়া পর্যন্ত আমি অনুমান করি)।
পয়েন্টি

3
এর অর্থ আপনার ব্রাউজারটি বাড়তে থাকে। আপনি একবার একটি অ্যাপ্লিকেশন ব্যবহার করুন, এটি আপনার ব্রাউজারে এটি স্টাফ রাখে এবং এটি চিরতরে থাকে ....
পিটার ভ্যান কাম্পেন

1
আপনি প্রতি ওয়েবসাইট সংরক্ষণ করতে পারবেন স্থানীয় স্টোরেজ ডেটার পরিমাণ 10 মাইলের কাছাকাছি, তবে একটি গড় সাইট অল্প কয়েকটি স্ট্রিংয়ের চেয়ে অনেক বেশি সঞ্চয় করতে পারে, তাই আমি স্টোরেজ স্পেস সম্পর্কে কিছু মনে করব না
জুয়ান

1
ফায়ারফক্সের এখানে একটি দলিলযুক্ত উচ্ছেদ নীতি রয়েছে
শ্রীভাত্সার

269

লোকালস্টোরারেজে আপনি যে বস্তুটি সঞ্চয় করেন তাতে টাইমস্ট্যাম্প সংরক্ষণ করার পরামর্শ দেব

var object = {value: "value", timestamp: new Date().getTime()}
localStorage.setItem("key", JSON.stringify(object));

আপনি অবজেক্টটি বিশ্লেষণ করতে পারেন, টাইমস্ট্যাম্পটি পেতে এবং বর্তমান তারিখের সাথে তুলনা করতে পারেন এবং প্রয়োজনে অবজেক্টের মান আপডেট করুন।

var object = JSON.parse(localStorage.getItem("key")),
    dateString = object.timestamp,
    now = new Date().getTime().toString();

compareTime(dateString, now); //to implement

3
ঠিক আছে, ক্লায়েন্টের সময় সুসংগত না হলেও, আপনি তার পরিবর্তে আপনার সার্ভারের সময়টি ব্যবহারের কোনও উপায় খুঁজে পেতে পারেন। টাইমস্ট্যাম্পটি একটি ডিভের মধ্যে প্রতিধ্বনিত করার মতো।
সুপ্রিম ডলফিন

আপনি কি সময়ের ব্যবধানে (যেমন settimoutপ্রতি 5 সেকেন্ডের জন্য) টাইমস্ট্যাম্পকে পার্স এবং তুলনা করতে পারেন বা ক্লায়েন্ট সার্ভারে প্রেরিত প্রতিটি অনুরোধের জন্য?
ইবুবি

আরও ভাল উপায় প্রতিটি ব্যবহারকারীর অনুরোধের জন্য তারিখগুলি তুলনা করা হয়
তেরাই

36

আপনি lscache ব্যবহার করতে পারেন । স্টোরেজের আকার সীমা ছাড়িয়ে গেছে এমন উদাহরণ সহ এটি এটি আপনার জন্য স্বয়ংক্রিয়ভাবে পরিচালনা করে। যদি এটি হয়, এটি আইটেমগুলি ছাঁটাই শুরু করে যা তাদের নির্দিষ্ট মেয়াদ শেষের সবচেয়ে নিকটতম।

থেকে readme:

lscache.set

Stores the value in localStorage. Expires after specified number of minutes.

Arguments
key (string)
value (Object|string)
time (number: optional)

নিয়মিত স্টোরেজ পদ্ধতির মধ্যে এটিই আসল পার্থক্য। পান, সরান, ইত্যাদি একই কাজ করুন।

আপনার যদি এত বেশি কার্যকারিতাটির প্রয়োজন না হয় তবে আপনি কেবল মূল্য দিয়ে (জেএসএন এর মাধ্যমে) একটি টাইম স্ট্যাম্প সঞ্চয় করতে পারেন এবং এটিকে মেয়াদোত্তীর্ণের জন্য পরীক্ষা করতে পারেন।

লক্ষণীয়, লোকাল স্টোরেজটি ব্যবহারকারীর কাছে রেখে যাওয়ার পিছনে একটি ভাল কারণ রয়েছে। যখন আপনার অত্যন্ত অস্থায়ী ডেটা সঞ্চয় করতে হয় তখন lscache এর মতো জিনিসগুলি কার্যকর হয় things


ধন্যবাদ! আমার যা প্রয়োজন তার জন্য এটি দুর্দান্ত - ব্যবহারকারী যদি কোনও বুবু তৈরি করে বা ব্রাউজারটি তাদের কাজটি সংরক্ষণ করার আগে বন্ধ হয়ে যায় তবে ডেটা কেবল সেখানে থাকা দরকার, তবে কুকিজের জন্য খুব বেশি ডেটা রয়েছে। আমি এটি পিয়েরোক্সি.নেট / ব্লগ / পেজস / এলজি- স্ট্রিং / ইন্ডেক্স এইচটিএমএল এর সাথে একত্রে ব্যবহার করছি ।
পিটার স্মার্ট

34

ব্রায়নার ফেরেরিরা, একটি ভাল পয়েন্ট এনেছে: একটি সহোদর কী সংরক্ষণ করা যেখানে সমাপ্তির তথ্য থাকে info এইভাবে, যদি আপনার কাছে প্রচুর পরিমাণে কী থাকে বা আপনার মানগুলি বড় জেসন অবজেক্ট হয় তবে টাইমস্ট্যাম্প অ্যাক্সেস করার জন্য আপনার সেগুলি পার্স করার দরকার নেই।

এখানে একটি উন্নত সংস্করণ অনুসরণ:

 /*  removeStorage: removes a key from localStorage and its sibling expiracy key
    params:
        key <string>     : localStorage key to remove
    returns:
        <boolean> : telling if operation succeeded
 */
 function removeStorage(name) {
    try {
        localStorage.removeItem(name);
        localStorage.removeItem(name + '_expiresIn');
    } catch(e) {
        console.log('removeStorage: Error removing key ['+ key + '] from localStorage: ' + JSON.stringify(e) );
        return false;
    }
    return true;
}
/*  getStorage: retrieves a key from localStorage previously set with setStorage().
    params:
        key <string> : localStorage key
    returns:
        <string> : value of localStorage key
        null : in case of expired key or failure
 */
function getStorage(key) {

    var now = Date.now();  //epoch time, lets deal only with integer
    // set expiration for storage
    var expiresIn = localStorage.getItem(key+'_expiresIn');
    if (expiresIn===undefined || expiresIn===null) { expiresIn = 0; }

    if (expiresIn < now) {// Expired
        removeStorage(key);
        return null;
    } else {
        try {
            var value = localStorage.getItem(key);
            return value;
        } catch(e) {
            console.log('getStorage: Error reading key ['+ key + '] from localStorage: ' + JSON.stringify(e) );
            return null;
        }
    }
}
/*  setStorage: writes a key into localStorage setting a expire time
    params:
        key <string>     : localStorage key
        value <string>   : localStorage value
        expires <number> : number of seconds from now to expire the key
    returns:
        <boolean> : telling if operation succeeded
 */
function setStorage(key, value, expires) {

    if (expires===undefined || expires===null) {
        expires = (24*60*60);  // default: seconds for 1 day
    } else {
        expires = Math.abs(expires); //make sure it's positive
    }

    var now = Date.now();  //millisecs since epoch time, lets deal only with integer
    var schedule = now + expires*1000; 
    try {
        localStorage.setItem(key, value);
        localStorage.setItem(key + '_expiresIn', schedule);
    } catch(e) {
        console.log('setStorage: Error setting key ['+ key + '] in localStorage: ' + JSON.stringify(e) );
        return false;
    }
    return true;
}

সেট স্টোরেজ () এ, elseলাইনটি হওয়া উচিত নয় expires = Math.abs(1000*expires); //make sure it's positive?
অ্যালিসনমুলার

getStorageকল করার জন্য মাত্র একটি পয়েন্ট । আপনি যদি _expiresInসরাসরি কীটির সংস্করণটি অ্যাক্সেস করার চেষ্টা করেন , কীটি তখন হয়ে যায় ..._expiresIn_expiresInযা অবশ্যই কোন অস্তিত্ব নেই তাই এটি মূল ..._expiresInকীটি সরিয়ে দেয় , তার পরের বার আপনি যখন মূল কীটি অ্যাক্সেস করবেন তখন ..._expiresInঅস্তিত্ব থাকবে না এবং এটি আসলটি মুছে ফেলবে মূল. আমি আমার প্রকল্পগুলির মধ্যে এটির মধ্যে চলে আসার জন্য আমি এটির জন্য আটকা পড়ার পরামর্শ দেব। if(key.indexOf('_expiresIn') > -1) { return localStorage.getItem(key); }
আকস্মাতা

24

স্থানীয় স্টোরেজ মেয়াদোত্তীর্ণ প্রক্রিয়া সরবরাহ না করে, কুকিজ না। কোনও কুকির সাথে কেবল স্থানীয় স্টোরেজ কীটি যুক্ত করা একটি কুকির মতো সমাপ্তির পরামিতিগুলির সাথে স্থানীয় স্টোরেজ আপডেট করা যায় তা নিশ্চিত করার একটি সহজ উপায় সরবরাহ করে।

JQuery উদাহরণ:

if (!$.cookie('your_key') || !localStorage.getItem('your_key')) {
    //get your_data from server, then...
    localStorage.setItem('your_key', 'your_data' );
    $.cookie('your_key', 1);
} else {
    var your_data = localStorage.getItem('your_key');
}
// do stuff with your_data

এই উদাহরণটি যখন ব্রাউজারটি বন্ধ থাকে তখন মেয়াদ শেষ হওয়ার জন্য ডিফল্ট প্যারামিটার সহ একটি কুকি সেট করে। সুতরাং, যখন ব্রাউজারটি বন্ধ হয়ে যায় এবং পুনরায় খোলা হয়, তখন আপনার_ডাটার জন্য স্থানীয় ডেটা স্টোর একটি সার্ভার-সাইড কল দ্বারা সতেজ হয়ে যায়।

মনে রাখবেন যে এটি স্থানীয় ডেটা স্টোর সরানোর মতো নয়, পরিবর্তে যখনই কুকির মেয়াদ শেষ হয় তখন এটি স্থানীয় ডেটা স্টোরটি আপডেট করে। তবে, যদি আপনার প্রধান লক্ষ্যটি 4K এর বেশি ক্লায়েন্ট-সাইড (কুকির আকারের সীমাবদ্ধতা) সঞ্চয় করতে সক্ষম হয় তবে এই কুকি এবং স্থানীয় স্টোরেজটির জুড়ি আপনাকে কুকির একই সমাপ্তির পরামিতিগুলি ব্যবহার করে বৃহত্তর স্টোরেজ আকার অর্জন করতে সহায়তা করবে ।


কুকিজ সাফ করা যায়, এবং আরও খারাপ, সম্পূর্ণভাবে বন্ধ করা যেতে পারে।
সুপ্রিম ডলফিন

1
আমি এই সমাধানটি সবচেয়ে ভাল পছন্দ করি কারণ এটি অন্যান্য লাইব্রেরি ব্যবহার না করে বা স্থানীয়ভাবে সংরক্ষণের তারিখগুলি ম্যানুয়ালি পরিচালনা না করে ব্রাউজারটিকে আমাদের স্টোরেজ সমাধানের মেয়াদোত্তীর্ণ পরিচালনা করতে দেয়।
ইসি 13

10
মনে রাখবেন কুকিজ প্রতিটি অনুরোধে প্রেরণ করা হয়।
লুকাস

24

এখানে সেশন স্টোরেজ ব্যবহারের জন্য অত্যন্ত প্রস্তাবিত

  • এটি স্থানীয় স্টোরেজ হিসাবে একই তবে সেশন নষ্ট হয়ে গেলে / ব্রাউজার বন্ধ হয়ে যায়
  • এছাড়াও localStorage ট্যাবগুলির মধ্যে ভাগ করে নিতে পারেন যখন sessionStorage শুধুমাত্র সাম্প্রতিক ট্যাবের মধ্যে ব্যবহার করতে পারেন, কিন্তু মান রিফ্রেশ পৃষ্ঠাতে পরিবর্তন করে না বা পৃষ্ঠা পরিবর্তন
  • কুকির বিপরীতে নেটওয়ার্ক ট্র্যাফিক হ্রাস করতে সেশন স্টোরেজও দরকারী

সেট মান ব্যবহারের জন্য

sessionStorage.setItem("key","my value");

মান ব্যবহারের জন্য

var value = sessionStorage.getItem("key");

এপিআই দেখার জন্য এখানে ক্লিক করুন

সেট জন্য সমস্ত উপায় হয়

  sessionStorage.key = "my val";
  sessionStorage["key"] = "my val";
  sessionStorage.setItem("key","my value");

পাওয়ার জন্য সমস্ত উপায়

  var value = sessionStorage.key;
  var value = sessionStorage["key"];
  var value = sessionStorage.getItem("key");

8
নোট যে sessionStorageট্যাবগুলির মধ্যে ডেটা ভাগ করতে কাজ করে না
ভার্গব মমমাদারিডি

14

জীবনচক্রটি অ্যাপ্লিকেশন / ব্যবহারকারী দ্বারা নিয়ন্ত্রিত হয়।

মান থেকে :

ব্যবহারকারী এজেন্টদের কেবল সুরক্ষার কারণে বা যখন ব্যবহারকারী কর্তৃক এটির জন্য অনুরোধ করা হয় তখন স্থানীয় সঞ্চয়স্থান অঞ্চলগুলি থেকে ডেটা শেষ করা উচিত। স্ক্রিপ্ট যে ডেটা অ্যাক্সেস করতে পারে চলাকালীন ব্যবহারকারী এজেন্টদের সর্বদা ডেটা মুছে ফেলা উচিত।


10

ডাব্লু 3 সি খসড়া থেকে:

ব্যবহারকারী এজেন্টদের কেবল সুরক্ষার কারণে বা যখন ব্যবহারকারী কর্তৃক এটির জন্য অনুরোধ করা হয় তখন স্থানীয় সঞ্চয়স্থান অঞ্চলগুলি থেকে ডেটা শেষ করা উচিত। স্ক্রিপ্ট যে ডেটা অ্যাক্সেস করতে পারে চলাকালীন ব্যবহারকারী এজেন্টদের সর্বদা ডেটা মুছে ফেলা উচিত।

আপনি আপনার সময়সূচীতে সেটটি আইটেম (কী, মান) ব্যবহার করে আপনার আপডেটগুলি করতে চাইবেন; এটি হয় নতুন ডেটা দিয়ে প্রদত্ত কীটি যুক্ত বা আপডেট করবে।


হুম ... সম্ভবত ডেটা অংশ হিসাবে একটি তারিখ তালিকাভুক্ত করা ভাল ধারণা হবে? অথবা প্রতিবার ডেটা পরিবর্তিত হতে পারে একটি ভিন্ন কী ব্যবহার করে।
অসন্তুষ্টগোট

9
// Functions
function removeHtmlStorage(name) {
    localStorage.removeItem(name);
    localStorage.removeItem(name+'_time');
}

function setHtmlStorage(name, value, expires) {

    if (expires==undefined || expires=='null') { var expires = 3600; } // default: 1h

    var date = new Date();
    var schedule = Math.round((date.setSeconds(date.getSeconds()+expires))/1000);

    localStorage.setItem(name, value);
    localStorage.setItem(name+'_time', schedule);
}

function statusHtmlStorage(name) {

    var date = new Date();
    var current = Math.round(+date/1000);

    // Get Schedule
    var stored_time = localStorage.getItem(name+'_time');
    if (stored_time==undefined || stored_time=='null') { var stored_time = 0; }

    // Expired
    if (stored_time < current) {

        // Remove
        removeHtmlStorage(name);

        return 0;

    } else {

        return 1;
    }
}

// Status
var cache_status = statusHtmlStorage('cache_name');

// Has Data
if (cache_status == 1) {

    // Get Cache
    var data = localStorage.getItem('cache_name');
    alert(data);

// Expired or Empty Cache
} else {

    // Get Data
    var data = 'Pay in cash :)';
    alert(data);

    // Set Cache (30 seconds)
    if (cache) { setHtmlStorage('cache_name', data, 30); }

}

4
আমি এই পদ্ধতির পছন্দ করি, কারণ এটিতে প্রথমে ডেটা পার্স করার প্রয়োজন হয় না।
ক্রিস্টোফ

3

যদি কেউ jQuery এর jStorage প্লাগইন ব্যবহার করে তবে এটি সেটটিটিএল ফাংশনটির সাথে মেয়াদ শেষ হতে পারে যদি জেএসটোরেজ প্লাগইন

$.jStorage.set('myLocalVar', "some value");
$.jStorage.setTTL("myLocalVar", 24*60*60*1000); // 24 Hr.

3

যদি কেউ এখনও দ্রুত সমাধানের সন্ধান করে এবং জ্যাকোরি ইত্যাদির মতো নির্ভরতা না চান তবে আমি একটি মিনি লিবি লিখেছি যা স্থানীয় / সেশন / কাস্টম স্টোরেজটিতে মেয়াদোত্তীর্ণতা যুক্ত করে, আপনি এখানে উত্স সহ এটি খুঁজে পেতে পারেন:

https://github.com/RonenNess/ExpiredStorage


3

আপনি এটি চেষ্টা করতে পারেন।

var hours = 24; // Reset when storage is more than 24hours
var now = new Date().getTime();
var setupTime = localStorage.getItem('setupTime');
if (setupTime == null) {
     localStorage.setItem('setupTime', now)
} else {
    if(now-setupTime > hours*60*60*1000) {
         localStorage.clear()
         localStorage.setItem('setupTime', now);
    }
}

1

কৌণিক এবং লোকালফোরেজ ব্যবহার করে কার্যকরী:

angular.module('app').service('cacheService', function() {

  return {
    set: function(key, value, expireTimeInSeconds) {
      return localforage.setItem(key, {
        data: value,
        timestamp: new Date().getTime(),
        expireTimeInMilliseconds: expireTimeInSeconds * 1000
      })
    },
    get: function(key) {
      return localforage.getItem(key).then(function(item) {
        if(!item || new Date().getTime() > (item.timestamp + item.expireTimeInMilliseconds)) {
          return null
        } else {
          return item.data
        }
      })
    }
  }

})

আমি সাইটটি যাচাই করেছি এবং আমি তাদের এপিআইতে কোনও 'এক্সপায়ারটাইমআইমনসিসিকান্ডস' কী দেখতে পাচ্ছি না। এটি কি একটি অনিবন্ধিত / অসমর্থিত সেটিং?
aaaaaa

1
@ ফিল্লসন এটি একটি কাস্টম বাস্তবায়ন আমি ব্যবহার করে ব্যবহার করেছি localforageexpireTimeInMillisecondsকিছু localforageঅ্যাট্রিবিউট নয়, তবে একটি ভেরিয়েবল আমি যাচাই করে রেখেছি যে সঞ্চিত ডেটাটির মেয়াদ শেষ হতে হবে কিনা তা পরীক্ষা করতে। getআমার উদাহরণে ফাংশন সংজ্ঞা পরীক্ষা করুন।
টমাস রোমেরো

বাহ localforageআমি যে হালকা ওজনের সামান্য সহায়ক ক্লাসের আশা করছিলাম তা নয়
সাইমন_উইভার

1

@ সেবারমেলির দৃষ্টিভঙ্গি আমার মতে সেরা, তবে আপনি যদি কেবলমাত্র একটি অধিবেশন চলার জন্য ডেটা বজায় রাখতে চান তবে sessionStorageসম্ভবত এটি আরও ভাল বিকল্প:

এটি একটি গ্লোবাল অবজেক্ট (সেশন স্টোরেজ) যা পৃষ্ঠাগুলির সেশনের সময়কালের জন্য উপলভ্য স্টোরেজ অঞ্চলটি বজায় রাখে। ব্রাউজারটি খোলা থাকে এবং পৃষ্ঠা পুনরায় লোড এবং পুনরুদ্ধার করে যতক্ষণ বেঁচে থাকে ততক্ষণ পৃষ্ঠার সেশন স্থায়ী হয়। একটি নতুন ট্যাব বা উইন্ডোতে একটি পৃষ্ঠা খোলার ফলে একটি নতুন সেশন শুরু হবে।

এমডিএন: সেশনস্টোরেজ


1

অনুসন্ধানকারীদের সুবিধার জন্য:

ফার্নান্দোর মতো, যখন সঞ্চিত মানগুলি সহজ ছিল তখন আমি কোনও জেসন যুক্ত করতে চাইনি। আমার কেবলমাত্র কিছু UI ইন্টারঅ্যাকশন ট্র্যাক করা এবং ডেটা প্রাসঙ্গিক রাখা প্রয়োজন (উদাহরণস্বরূপ, কোনও ব্যবহারকারী কোনও ইকমার্স সাইট কীভাবে পরীক্ষা করার আগে ব্যবহার করেছিলেন)।

এটি প্রত্যেকের মানদণ্ড পূরণ করবে না, তবে আশা করা যায় যে কারওর জন্য একটি দ্রুত অনুলিপি + পেস্ট স্টার্টার এবং অন্য একটি লিবিং যুক্ত করে সংরক্ষণ করা হবে।

দ্রষ্টব্য: আপনার স্বতন্ত্রভাবে আইটেমগুলি পুনরুদ্ধার করতে হবে তবে এটি ভাল হবে না।

// Addition
if(window.localStorage){
    localStorage.setItem('myapp-' + new Date().getTime(), 'my value');
}

// Removal of all expired items
if(window.localStorage){

    // two mins - (1000 * 60 * 20) would be 20 mins
    var expiryTime = new Date().getTime() - (1000 * 60 * 2);

    var deleteRows = [];
    for(var i=0; i < localStorage.length; i++){
        var key = localStorage.key(i);
        var partsArray = key.split('-');
        // The last value will be a timestamp
        var lastRow = partsArray[partsArray.length - 1];

        if(lastRow && parseInt(lastRow) < expiryTime){
            deleteRows.push(key);
        }
    }
    // delete old data
    for(var j=0; j < deleteRows.length; j++){
        localStorage.removeItem(deleteRows[j]);
    }
}

0

আপনি যদি ব্রাউজারগুলির লোকোস্টোরেজ অবজেক্টের সাথে পরিচিত হন তবে আপনি জানেন যে মেয়াদোত্তীর্ণ সময় দেওয়ার কোনও ব্যবস্থা নেই। তবে আমরা একটি নির্দিষ্ট সময় পেরিয়ে যাওয়ার পরে লোকসস্টারেজে আইটেমগুলি অকার্যকর করতে টিটিএল (বেঁচে থাকার সময়) যুক্ত করতে জাভাস্ক্রিপ্ট ব্যবহার করতে পারি।

function setLocalStorage(key, value, ttl) {
    // `item` is an object which contains the original value
    // as well as the time when it's supposed to expire
    const item = {
        value: value,
        expiry: ttl <= 0 ? -1 : new Date().getTime() + ttl
    };
    localStorage.setItem(key, JSON.stringify(item));
}

function getLocalStorage(key) {
    const itemStr = localStorage.getItem(key);
    // if the item doesn't exist, return null
    if (!itemStr) {
        return null;
    }
    const item = JSON.parse(itemStr);
    // compare the expiry time of the item with the current time
    if (item.expiry > 0 && new Date().getTime() > item.expiry) {
        // If the item is expired, delete the item from storage
        // and return null
        localStorage.removeItem(key);
        return null;
    }
    return item.value;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.