2012-02-05 22 views
9

Tôi có một ứng dụng HTML5 đơn giản mà tôi hiện đang làm việc và tôi tự hỏi nếu có thể xóa một mục trong Bộ nhớ cục bộ HTML5 sau một khoảng thời gian, như sau 24 giờ, hãy xóa mục này, v.v.Xóa một mục trong Bộ nhớ cục bộ HTML5 sau một khoảng thời gian?

Tôi đang nghĩ rằng Date Object được xây dựng thành JavaScript có lẽ sẽ là thứ tôi cần.

Điều này có khả thi không? Một số ví dụ mã sẽ tốt đẹp nếu bạn có thể, cảm ơn!

Trả lời

10

Bạn có thể lưu trữ ngày cùng với các dữ liệu

//add data we are interested in tracking to an array 
var values = new Array(); 
var oneday = new Date(); 
oneday.setHours(oneday.getHours() + 24); //one day from now 
values.push("hello world"); 
values.push(oneday); 
try { 
    localStorage.setItem(0, values.join(";")); 
} 
catch (e) { } 

//check if past expiration date 
var values = localStorage.getItem(0).split(";"); 
if (values[1] < new Date()) { 
    localStorage.removeItem(0); 
} 
+0

Tôi thích giải pháp này tuy nhiên tôi nghĩ rằng nó nên được lưu ý cho ví dụ cụ thể này mà đánh giá cao [1] cần phải được phân tích thành một đối tượng ngày trước so với nó. Giống như ngày mới này (giá trị [1]) – labago

0

Nếu bạn muốn làm điều này tôi nghĩ rằng về cơ bản bạn phải làm điều đó bằng tay. Ví dụ, bạn có thể lưu dấu thời gian trong một khe localStorage bên cạnh mỗi giá trị bạn đang lưu trữ, và sau đó kiểm tra dấu thời gian so với thời gian hiện tại ở một khoảng thời gian thông thường như tải trang hoặc setTimeout hoặc một cái gì đó.

Ví dụ:

//this function sets the value, and marks the timestamp 
function setNewVal(prop) 
{ 
    window.localStorage[prop] = Math.random(); 
    window.localStorage[prop+"timestamp"] = new Date(); 
} 

//this function checks to see which ones need refreshing 
function someRucurringFunction() 
{ 
    //check each property in localStorage 
    for (var prop in window.localStorage) 
    { //if the property name contains the string "timestamp" 
     if (prop.indexOf("timestamp") != -1) 
     { //get date objects 
      var timestamp = new Date(window.localStorage[prop]); 
      var currentTime = new Date(); 

      //currently set to 30 days, 12 hours, 1 min, 1s (don't set to 0!) 
      var maxAge = (1000 * 1) *//s 
          (60  * 1) *//m 
          (60  * 12) *//h 
          (24  * 30); //d 

      if ((currentTime - timestamp) > maxAge) 
      {//if the property is too old (yes, this really does work!) 
       //get the string of the real property (this prop - "timestamp") 
       var propString = prop.replace("timestamp",""); 
       //send it to some function that sets a new value 
       setNewVal(propString); 
      } 
     } 
    } 
} 
//set the loop 
window.setInterval(someRucurringFunction,(1000*60*60); 

EDIT: Phương pháp mrtsherman của sẽ hoàn toàn làm việc tốt. Tương tự, bạn có thể nhập dấu thời gian làm thuộc tính của đối tượng mà bạn có thể lưu trữ/truy xuất bằng JSON.stringify/parse(). Nếu một trong hai mảng hoặc đối tượng là rất lớn, hoặc bạn có rất nhiều người trong số họ, tôi có thể đề nghị sử dụng phương pháp bất động sản song song cho hiệu quả, mặc dù.

-3
window.setInterval(function() { 
     localStorage.setItem('nicwincount', 0); 
},8640000); //24 * 60mins * 60sec 

ps: nicwincount là bộ lưu trữ cục bộ bạn đã đặt trước đó. localStorage.setItem ('nguồn cấp dữ liệu', Ext.encode (nguồn cấp dữ liệu));

hy vọng có thể giúp bạn.

+1

Điều này không cho rằng thiết bị vẫn ở trên trang trong 24 giờ? Không thể! ;-) – markE

1

Sử dụng giải pháp này:

(function() { 

    var lastclear = localStorage.getItem('lastclear'), 
     time_now = (new Date()).getTime(); 

    // .getTime() returns milliseconds so 1000 * 60 * 60 * 24 = 24 days 
    if ((time_now - lastclear) > 1000 * 60 * 60 * 24) { 

    localStorage.clear(); 

    localStorage.setItem('lastclear', time_now); 
    } 

})(); 
+0

ai cần ở lại ?! Nó kiểm tra bạn localStorage nếu bạn truy cập trang web trong thời gian X vừa qua và xóa nó nếu nó lớn hơn. –

+0

Vì vậy, hãy +1 nếu nó hoạt động cho –

+0

của bạn, tôi nghĩ bạn có nghĩa là 1000 * 60 * 60 * 24 = 24 giờ không phải 24 ngày – Yuhao

Các vấn đề liên quan