peri hokiperihokiclarustologisticsrimashaop.compola taktis menang gates of olympus x1000 perihokipemain perihoki bongkar trik jepep starlight princess x1000perihoki beri panduan lengkap bermain mahjong ways 2 pgsofttips cara penghasil uang pgsoft mahjong ways 2 perihokimahjong wins 3 perihoki memberikan penggali terbesarfenomena gates of olympus buka peluang besar bagi duta76cara dapat pola emas rahasia di duta7 wild west goldtrik menang pgsoft mahjong ways 2 modal receh maxwin duta76duta76 main pgsoft mahjong ways 2 di sela istirahatscatter hitam mahjong wins 3 spin pasti jepe duta76perihoki spin mahjong ways 2 pgsoft scatter hitam maxwinsimbol mahjong wins 3 yang sering muncul di awal perihokitrik gampang menang mahjong winscuan mahjong wins 3 tanpa hentipola spin taruhan kecil mahjong winsstrategi kunci scatter hitam beruntungacor total mahjong wayskemenangan maksimal mahjong wayskemenangan pria pekanbaru mahjong waysmahjong wins3 fenomena baru sumatera baratmenangkan mahjong dengan lincahmenembus batas keberuntungan mahjong waysmenjajal keberuntungan di mahjong wayspola gratis mahjong ways1scatter hitam senjata rahasia mahjong winsteknik spinning menguntungkan untuk scatter hitamanalisis rtp tertinggi mahjong winsfenomena scatter hitam mahjong winsibu rumah tangga dan keberuntungan mahjongkeseruan main mahjong wins3menang mahjong pengguna baru di sosial mediamenghargai setiap momen di mahjong waysserunya main mahjong di warung internetspin slow motion mancing scatterstrategi jitu maxwin mahjong waysstrategi jitu menang mahjong modal kecil jackpot besaranak kampung papua menggemparkan mahjongkeajaiban scatter hitam mahjong wayskeberhasilan joni mahjong winskejaiban mahjong ways di ujung jalanketua mahjong wins3 kehadiran kemenangan dimulai dari balimahjong kehadiran yang menguntungkanmahjong menggila adat88panduan kilat raih 108 jutatips memenangkan mahjongbarista kopi menang 110 juta spin mahjongdakota76 scatter hitam mahjong wins 3gagal cpns menang mahjong wins 3 rp120 jutakisah karyawan minimarket dapat thr lebih awal mahjong winskisah pelajar sma kuasai mahjong wins 3 inspirasi sekolahkisah penjaga parkir tanah abang motor baru mahjong winskisah sukses ibu rumah tangga bandung mahjong winsmahasiswa kkn beli iphone15 mahjong wins3 dakotamantan anak band influencer mahjong scatter hitampola rtp senin gates of olympus guru matematikatukang cuci motor menemukan keberuntungan di mahjong

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 282

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_cookie_params(): Cannot change session cookie parameters when headers already sent

Filename: Session/Session.php

Line Number: 294

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 304

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 314

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 315

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 316

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 317

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 375

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: drivers/Session_files_driver.php

Line Number: 108

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_save_handler(): Cannot change save handler when headers already sent

Filename: Session/Session.php

Line Number: 110

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_start(): Cannot start session when headers already sent

Filename: Session/Session.php

Line Number: 143

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

localStorage và sessionStorage trong Javascript - Freetuts
PHẦN CƠ BẢN
VÒNG LẶP
DATA TYPES
EVENTS
DOM
BOM
OBJECT
BỔ SUNG
THỰC HÀNH
JAVASCRIPT CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

localStorage và sessionStorage trong Javascript

Trong bài này chung ta sẽ tìm hiểu localStorage và sessionStore trong Javascript, qua đó sẽ giúp bạn hiẻu được localStorage là gì và sessionStore là gì.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Như bạn biết, cookie trong Javascript có công dụng lưu trữ dữ liệu tạm thời ở browser. Ta thường sử dụng nó để lưu trữ các thông tin cấu hình cho mỗi trình duyệt, và đương nhiên là các thông tin này giữa các trình duyệt sẽ không liên quan với nhau.

Nhưng từ khi HTML5 ra đời thì xuất hiện thêm hai đối tượng nữa, đó là localStore và sessionStore. Về cách sử đụng hai đối tượng này không khác gì cookie, nhưng về cấu trúc hoạt động thì khác biệt rất nhiều. Chi tiết thế nào thì chúng ta cùng tìm hiểu nhé.

1. Local Storage là gì?

Local Storage là một module của javascript, hoạt động trên các trình duyệt web như Chrome / Firefox. Nó dùng để lưu trữ dữ liệu tạm thời và riêng biệt cho từng domain, nên đây được xem là giải pháp để thay thế cho cookie.

Bài viết này được đăng tại [free tuts .net]

Điểm khác biệt lớn nhất giữa cookie và local storage là local storage cho phép bạn lưu trữ thông tin tương đối lớn lên đến 5MB, ngoài ra local storage không gửi thông tin lên server như cookie. Cả local storage và cookie đều không làm ảnh hưởng đến hiệu xuất của trang web.

Chúng ta có 2 loại local storage trong javascript, đó là:

  • localStorage: Lưu trữ dữ liệu vô thời hạn, dữ liệu sẽ được lưu trữ cho tới khi người dùng clear history.
  • sessionStorage: Lưu trữ dữ liệu cho mội phiên làm việc, có nghĩa dữ liệu sẽ bị mất khi bạn tắt browser.

Bây giờ chúng ta sẽ tìm hiểu kỹ hơn về hai đối tượng này nhé.

2. localStorage trong javascript

localStorage lưu trữ dữ liệu vô thời hạn, có nghĩa dữ liệu sẽ không bị mất cho tới khi bạn sử dụng tính năng clear history của trình duyệt, hoặc bạn sử dụng chính localStorage API để xóa.

Chúng ta có hai thao tác chính, đó là gán dữ liệulấy dữ liệu. Và trước khi sử dụng các phương thức này thì ta phải chắc chắn là trình duyệt có hỗ trợ nhé, bởi local store chỉ hoạt động trên các trình duyệt mới nhất hiện nay (tính từ ES6 2015). Đoạn code dưới đây sẽ giúp ta kiểm tra trình duyệt có hỗ trợ localStorage hay là không.

if (typeof(Storage) !== "undefined") {
    // Có hỗ trợ local storage
} else {
    // Không hỗ trợ local storage
}

So với cookie thì chúng ta không cần làm thao tác này, đây cũng chính là điểm yếu duy nhất của local storage. Nhưng tính thời điểm hiện tại thì nó không còn là vấn đề nữa, bởi hầu hết các trình duyệt đều đã cập nhật phiên bản mới nhất.

localStorage được tích hợp sẵn vào window interface, nên để sử dụng thì bạn chỉ việc gọi đến window.localStorage. Tuy nhiên, vẫn có một biến cục bộ localStorage nên bạn có thể bỏ window interface khi sử dụng.

localStore có 5 phương thức như sau:

  1. setItem(): Thêm dữ liệu vào localStorage
  2. getItem(): Lấy dũ liệu từ localStorage
  3. removeItem(): Xóa dữ liệu ra khỏi localStorage
  4. clear(): Xóa toàn bộ dữ liệu ra khỏi localStorage
  5. key(): Lấy tên key của dữ liệu đang lưu trữ trong localStorage

localStorage.setItem()

Dùng để thêm dữ liệu vào localStore, dữ liệu sẽ được lưu trữ ở dạng key => value.

localStorage.setItem(key, value);

Lưu key author với giá trị là Nguyễn Văn Cường.

localStorage.setItem('author', 'Nguyễn Văn Cường');

localStorage.getItem()

Dùng để lấy dữ liệu, tham số truyền vào chính là tên key muốn lấy. Nếu không tồn tại thì trả về undefined.

localStorage.getItem('author')

localStorage.removeItem()

Dùng để xóa dữ liệu, tham số truyền vào là key muốn xóa.

localStorage.removeItem('author');

localStorage.clear()

Xóa toàn bộ dữ liệu của localStorage.

localStorage.clear()

Ví dụ: Lưu trữ tên domain freetuts.net vào trình duyệt của người dùng khi truy cập vào website.

Bạn hãy tạo cho mình hai file a.htmlb.html với nội dung như sau.

File a.html
if (typeof(Storage) !== "undefined") {
    var domain = 'freetuts.net';
    localStorage.setItem('domain', domain);
} else {
    document.write('Trình duyệt của bạn không hỗ trợ local storage');
}
File b.html
if (typeof(Storage) !== "undefined") {
    var domain = localStorage.getItem('domain');
    document.write(domain); // kết quả freetuts.net
} else {
    document.write('Trình duyệt của bạn không hỗ trợ local storage');
}

Bây giờ bạn hãy chạy file a.html trước, sau đó bạn chạy file b.html thì sẽ thấy thông tin domain freetuts.net đã được in lên website. Điều này cho thấy file a.html đã lưu trữ thông tin vào browser rồi nên file b.html mới có thể lấy được thông tin đó. Bây giờ bạn thử tắt trình duyệt và mở lại file b.html thì sẽ thấy dữ liệu vẫn còn.

3. sessionStorage trong javascript

Công dụng của sessionStorage cũng tương tự như localStorage, chỉ có một điểm khác đó là dữ liệu của sessionStorage sẽ mất khi bạn đóng trình duyệt, còn localStorage thì không.

Ngoài ra, sessionStorage sẽ lưu trữ khác nhau cho mỗi tab. Nghĩa là khi bạn lưu dữ liệu ở tab này, xong bạn mở tab khác lên thì sẽ không thể sử dụng được dữ liệu đó.

sessionStorage không tồn tại hai phương thức getItemsetItem mà bạn sẽ bổ sung key và value cho nó.

sessionStorage cũng có 5 phương thức như sau:

  1. setItem(): Thêm dữ liệu vào sessionStorage
  2. getItem(): Lấy dữ liệu từ sessionStorage
  3. removeItem(): Xóa dữ liệu ra khỏi sessionStorage
  4. clear(): Xóa toàn bộ dữ liệu ra khỏi sessionStorage
  5. key(): Lấy tên key của dữ liệu đang lưu trữ trong sessionStorage

sessionStorage.setItem()

Dùng để lưu trữ dữ liệu vào sessionStorage. Tham số truyền vào là keyvalue.

sessionStorage.setItem(key, value);

Lưu key domain có giá trị là freetuts.net vào sessionStorage.

sessionStorage.setItem('domain', 'freetuts.net');

sessionStorage.getItem()

Dùng để lấy dữ liệu được lưu trữ trong sessionStorage.

sessionStorage.getItem('author')

sessionStorage.removeItem()

Dùng để xóa một key ra khỏi sessionStorage. Tham số truyền vào là key muốn xóa.

sessionStorage.removeItem('author');

sessionStorage.clear()

Dùng để xóa toàn bộ dữ liệu trên sessoinStorage.

sessionStorage.clear();

Quay lại ví dụ ở phần 2 thì mình sẽ viết lại như sau:

File a.html
if (typeof(Storage) !== "undefined") {
    sessionStorage.setItem('domain', 'freetuts.net');
} else {
    document.write('Trình duyệt của bạn không hỗ trợ local storage');
}
File b.html
if (typeof(Storage) !== "undefined") {
    document.write(sessionStorage.getItem('domain')); // kết quả freetuts.net
} else {
    document.write('Trình duyệt của bạn không hỗ trợ local storage');
}

Lưu ý: Khi chạy 2 link để test thì bạn phải chạy trên một tab nhé.

4. So sánh localStorage / sessionStorage và cookie

Trước đây đã có cookie rồi nhưng người ta vẫn nâng cấp thêm hai object localStorage và sessionStorage. Vậy chúng có những ưu điểm và nhược điểm gì? Khi nào thì nên sử dụng? Chúng ta cùng tìm hiểu ngay nhé.

Đối với cookie

Dữ liệu của cookie được lưu trữ riêng biệt theo từng domain, và dung lượng lưu trữ không được nhiều.

Khi một trang web được tải lên thì sẽ có rất nhiều request gửi đến server, có thể đó là những request yêu cầu tải hình ảnh, file css, file javascript ... nói chung là rất nhiều. Theo cơ chế của cookie thì bất kì một request nào gửi lên server đều gửi kèm dữ liệu cookie của domain đó. Vì vậy, với số lượng hàng trăm request đó thì có thể sẽ ảnh hưởng đến tốc độ tải trang.

Đối với localStorage và sessionStorage

Dữ liệu sẽ lưu trữ ở trình duyệt của khách mà thôi. Nó sẽ không được gửi kèm trong các request, điều này giúp giảm tải lượng dữ liệu mỗi khi load dữ liệu từ server.

Ngoài ra, dung lượng lưu trữ của Local Storage nhiều hơn so với cookie. Cụ thể như sau:

  • Cookie tối đa là 4kb
  • localStorage tối đa 5mb
  • sessionStorage tối đa 10mb

Nếu bạn muốn lưu trữ dữ liệu dang object vào localStorage thì hãy sử dụng kết hợp với phương thức JSON.stringify. Tức là ta sẽ chuyển đối tượng đó thành một chuỗi JSON rồi lưu trữ vào local storage.

Trên là những chia sẻ về cách sử dụng localStorage và sessionStorage trong javascript. Hy vọng qua bài này sẽ giúp bạn hiểu được phần nào về hai đối tượng này, cũng như biết khi nào thì nên sử dụng cookie, khi nào thì sử dụng local storage.

Cùng chuyên mục:

Functional Programming là gì? Tại sao và khi nào bạn nên sử dụng trong JavaScript

Functional Programming là gì? Tại sao và khi nào bạn nên sử dụng trong JavaScript

Những tính năng mới trong ES6+ trong JavaScript

Những tính năng mới trong ES6+ trong JavaScript

4 cách tránh memory leaks trong JavaScript

4 cách tránh memory leaks trong JavaScript

Capturing và bubbling Event trong Javascript

Capturing và bubbling Event trong Javascript

Phân biệt prototype và __proto__ trong JavaScript

Phân biệt prototype và __proto__ trong JavaScript

Cách hoạt động của Event Loop trong JavaScript

Cách hoạt động của Event Loop trong JavaScript

Phương thức bind(), call(), và apply() trong JavaScript

Phương thức bind(), call(), và apply() trong JavaScript

Cách khắc phục lỗi

Cách khắc phục lỗi "hoisting" trong JavaScript

Sử dụng Promise.all và Promise.race để quản lý các Promise trong JavaScript

Sử dụng Promise.all và Promise.race để quản lý các Promise trong JavaScript

Xử lý bất đồng bộ bằng vòng lặp for-await trong JavaScript

Xử lý bất đồng bộ bằng vòng lặp for-await trong JavaScript

Sự khác biệt giữa Promise, Callback và Async/Await trong JavaScript

Sự khác biệt giữa Promise, Callback và Async/Await trong JavaScript

Cách sử dụng Async functions trong JavaScript

Cách sử dụng Async functions trong JavaScript

Hàm String isspace() trong Python

Hàm String isspace() trong Python

Cách tạo số ngẫu nhiên trong Javascript

Cách tạo số ngẫu nhiên trong Javascript

Hướng dẫn cách tạo một số ngẫu nhiên ...

Cách gộp hai object javascript lại với nhau

Cách gộp hai object javascript lại với nhau

Cách lấy chiều dài của object trong Javascript

Cách lấy chiều dài của object trong Javascript

Hướng dẫn giải phương trình bậc 1 bằng Javascript

Hướng dẫn giải phương trình bậc 1 bằng Javascript

Cách dùng nextSibling trong javascript

Cách dùng nextSibling trong javascript

Cách dùng insertAdjacentHTML trong javascript

Cách dùng insertAdjacentHTML trong javascript

Cách dùng innerHTML trong Javascript

Cách dùng innerHTML trong Javascript

Top