2011-06-20 39 views
7

Cookie tuyệt vời vì giá trị được viết bằng website.com có thể được sử dụng trong www.website.com (www được coi là tên miền không có www). Nhược điểm là tất cả các giá trị cookie được gửi cùng với mọi yêu cầu HTTP đến máy chủ. Vì vậy, tôi đang tìm kiếm một cơ chế lưu trữ cục bộ sẵn có cho Javascript hoạt động cross-subdomain và không được truyền đến máy chủ. Cơ chế như vậy tồn tại? LocalStorage không hoạt động cross-subdomain và Flash Cookies sẽ không hoạt động trên iPhone.Cookie có phải là kho lưu trữ tên miền phụ duy nhất không?

+0

Bạn cần bao nhiêu dung lượng lưu trữ? Nếu không nhiều, và bạn đang sử dụng một mẫu PRG (POST, REDIRECT, GET), chỉ cần lưu giữ dữ liệu bạn cần vào chính trang đó trên GET, sau đó POST bất kỳ dữ liệu nào bạn cần từ trang. –

+0

Bạn đang tìm kiếm tên miền chéo như thế nào? Bạn cần hỗ trợ những trình duyệt nào không hỗ trợ LocalStorage? –

+0

@Rovert Harvey: Đó là một lượng lớn dữ liệu: sở thích, trạng thái đăng nhập, hoạt động gần đây. Tôi chỉ ghét truy vấn máy chủ cho dữ liệu không quan trọng, vì vậy tôi muốn lưu trữ nó cục bộ. /// @James Black: Cho đến giờ, tôi chỉ cần ** www ** và ** không phải www ** để chia sẻ cùng một giá trị. Tôi tin rằng đó là trải nghiệm người dùng kém khi người dùng thực hiện điều gì đó trên ** không phải www **, sau đó truy cập ** www ** và khám phá tất cả các tùy chọn của họ bị xóa sổ. Mục tiêu của tôi là nâng cấp các trình duyệt hiện đại để ngừng sử dụng cookie, nhưng dự phòng cho các cookie khi trình duyệt cũ không hỗ trợ cơ chế lưu trữ mới này. Bằng cách này, máy chủ của tôi mất ít hơn một hit – JoJo

Trả lời

3

Có lẽ chỉ cần chuyển hướng website.com đến www.website.com hoặc ngược lại? Điều này có vẻ như nó sẽ là sửa chữa đơn giản nhất. http://www.scriptalicious.com/blog/2009/04/redirecting-www-to-non-www-using-htaccess/

+0

Tác động hiệu suất của việc này là gì? – JoJo

+1

Một yêu cầu duy nhất-phản hồi nhiều hơn cho những người dùng cần được chuyển hướng. http://en.wikipedia.org/wiki/HTTP_301 Người dùng thậm chí sẽ không nhận thấy điều đó. – devictories

1

Nếu người dùng của bạn có tài khoản thực mà họ đăng nhập trên máy chủ của bạn thì bạn có thể lưu trữ phía máy chủ thông tin và chỉ bao gồm một chút javascript trong mỗi trang cần dữ liệu đó với dữ liệu thích hợp. Khi bạn hiển thị phía máy chủ trang, bạn có thể xác định đối tượng người dùng trong javascript với các thuộc tính thích hợp được đặt thành các giá trị dữ liệu mà sau đó có thể được tham chiếu phía máy khách. Bằng cách đó, bạn chỉ bao gồm dữ liệu cần thiết trong một trang nhất định, cùng một dữ liệu người dùng có sẵn bất kể máy tính người dùng đăng nhập từ đâu (không phụ thuộc vào cookie liên tục). Nếu thỉnh thoảng các mẩu dữ liệu lớn hơn chỉ cần và bạn không muốn đưa chúng vào trang trong trường hợp chúng cần thiết, sau đó làm cho các mẩu dữ liệu đó có thể truy vấn thông qua ajax/json để chúng có thể được truy xuất chỉ khi cần.

Nếu bạn vẫn có ý định lưu trữ cục bộ, thì cookie hoặc bộ nhớ cục bộ HTML5 là lựa chọn duy nhất và cookie của bạn sẽ là tùy chọn trình duyệt duy nhất bao gồm tất cả các trình duyệt đang sử dụng. Ngoài việc phức tạp triển khai, bạn có thể kết hợp một số đề xuất:

  1. Luôn chuyển hướng đến www.domain.com để tất cả hoạt động của người dùng trên cùng một miền.
  2. Sử dụng bộ nhớ cục bộ HTML5 khi có sẵn (chuyển hướng ở bước 1 ngăn chặn khóa phụ miền).
  3. Quay lại bộ nhớ cookie khi bộ nhớ cục bộ HTML5 không khả dụng.

Người ta có thể viết hoặc tìm một trừu tượng cho lưu trữ cục bộ HTML5 và cookie để 99% mã của bạn có thể độc lập với cơ chế lưu trữ nào thực sự được sử dụng. Có vẻ như có một số plugin jQuery thực hiện chính xác điều đó.

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