2012-10-07 29 views
6

Ứng dụng của tôi nhận dữ liệu từ máy chủ khác, sử dụng API với số lượng yêu cầu hạn chế. Dữ liệu thay đổi hiếm khi, nhưng có thể cần thiết ngay cả sau khi làm mới trang.Cách tốt nhất để sử dụng dữ liệu bộ nhớ đệm trong js ở phía khách hàng là gì?

  1. Giải pháp tốt nhất cho vấn đề này là gì, sử dụng cookie hoặc HTML5 WebStorage?
  2. Và có thể có cách khác để giải quyết tác vụ này?

Trả lời

5

Giống như các vấn đề tương thích trình duyệt chéo, cookie là lựa chọn duy nhất thay vì lưu trữ web.

Nhưng câu hỏi thực sự phụ thuộc vào loại dữ liệu nào bạn đang lưu vào bộ nhớ cache?

Đối với những gì bạn đang cố gắng, cookie và lưu trữ web có thể không cần thiết chút nào.

  • Cookie được sử dụng để lưu trữ thông tin liên quan đến cấu hình, thay vì dữ liệu thực tế.
  • Bộ nhớ web hỗ trợ lưu trữ dữ liệu liên tục, tương tự như cookie nhưng có khả năng nâng cao đáng kể và không có thông tin được lưu trữ trong tiêu đề yêu cầu HTTP. [1]

Tôi thà nói, nó sẽ là ngu ngốc để cache toàn bộ trang như cookie hoặc web lưu trữ cả hai. Đối với những mục đích này, các tùy chọn bộ đệm ẩn phía máy chủ có thể là cách tốt hơn.

Cập nhật:

Trích dẫn:

dữ liệu về hoạt động của người dùng trong một số mạng xã hội (fb, vk, google +)

Phát hiện các tính năng web lưu trữ, sử dụng thư viện như mordernizr và nếu không tồn tại, hãy quay lại phương thức cookie. Một ví dụ đơn giản

if (Modernizr.localstorage) { 
    // browser supports local storage 
    // Use this method 
} else { 
    // browser doesn't support local storage 
    // Use Cookie Method 
} 

[1]: http://en.wikipedia.org/wiki/Web_storage

+0

Loại dữ liệu nào ... hmmm. Ví dụ: dữ liệu về hoạt động của người dùng trong một số mạng xã hội (fb, vk, google +). Caching dữ liệu trên phía máy chủ cho tôi rất xấu cách, bởi vì rất nhiều dữ liệu =) Cross trình duyệt tương thích cho ứng dụng này không phải là nhiệm vụ chính, ứng dụng này được thực hiện cho các trình duyệt hiện đại. – artzub

+0

@artzub, Kiểm tra cập nhật của tôi – Starx

+0

Thx, tôi nhìn nó! – artzub

4

tôi đã viết lib này để giải quyết cùng một vấn đề:

Cache your data with Javascript using cacheJS

Dưới đây là một số tập quán cơ bản

// just add new cache using array as key 
 
cacheJS.set({blogId:1,type:'view'},'<h1>Blog 1</h1>'); 
 
cacheJS.set({blogId:1,type:'json'}, jsonData); 
 

 
// remove cache using key 
 
cacheJS.removeByKey({blogId:1,type:'json'}); 
 

 

 
// add cache with ttl and contextual key 
 
cacheJS.set({blogId:2,type:'view'},'<h1>Blog 2</h1>', 3600, {author:'hoangnd'}); 
 

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

 

 
// remove cache with con textual key 
 
// cache for blog 2 and 3 will be removed 
 
cacheJS.removeByContext({author:'hoangnd'})

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