2010-09-27 27 views
8

Tôi cần làm cho trang web của mình nhanh hơn ở phía khách hàng. Tôi tự hỏi liệu thao tác cookie Javascript quá mức có thể làm chậm trình duyệt không. Nó sử dụng đĩa cứng, đó là thành phần chậm nhất của máy tính. Trên đĩa cứng bị phân mảnh nghiêm trọng, thao tác cookie có thể đóng băng trình duyệt không?Viết một cookie rất chậm trong JS?

JS có thực hiện bất kỳ tối ưu hóa nào cho việc ghi/đọc cookie (bộ nhớ đệm, v.v.) hay không. Tôi có thể khai thác các tối ưu hóa này để cải thiện trang web của mình không?

Việc thay thế cookie phía máy khách với cơ sở dữ liệu phía máy chủ không nằm trong câu hỏi vì máy chủ của tôi bị quá tải.

+2

tối ưu hóa sớm? Tôi tin tưởng cookie sẽ nhanh vì hầu hết các cookie đều theo mặc định rất nhỏ. Bạn có thể giải thích lý do tại sao bạn cho rằng cookie của mình sẽ tác động tiêu cực đến hiệu suất không? – jcolebrand

Trả lời

0

cookie là một phần của yêu cầu và tiêu đề phản hồi, do đó tải chúng lên có nghĩa là tải lên mọi yêu cầu và phản hồi. Thứ hai, bạn được giới hạn trong tổng số 50 cookie cho mỗi tên miền và 4k cho mỗi cookie.Thứ ba, nhiều người dùng hoàn toàn sợ hãi các cookie và có xu hướng xóa chúng ngay cả khi chúng vô hại.

Vì 3 lý do đó, nhà phát triển web hiếm khi sử dụng chúng trừ khi thật cần thiết (nghĩa là mã thông báo phiên). Bởi vì các nhà phát triển web rất hiếm khi sử dụng chúng, có rất ít "thực hành tốt nhất" xung quanh chúng và chúng có xu hướng không thu hút được nhiều sự chú ý.

Tôi sẽ đảm bảo rằng nó thực sự tương tác với các cookie là vấn đề trước khi giải quyết nó. Việc thực hiện là trình duyệt cụ thể, vì vậy bạn có thể sẽ thấy kết quả rất khác nhau của những bài kiểm tra tùy thuộc vào trình duyệt bạn thử nó trên.

+0

Tại sao cookie được gửi đến máy chủ? Mã máy chủ của tôi không bao giờ sử dụng cookie. Tôi chỉ truy cập các cookie ở phía JS. Vì vậy, nếu mỗi người dùng có 20 cookie, tất cả 20 cookie sẽ được gửi theo mọi yêu cầu máy chủ PHP? Tại sao??? Có cách nào để vô hiệu hóa việc gửi cookie đến máy chủ không? – JoJo

11

Có một vài cách bạn có thể tăng tốc độ trang của mình ở phía khách hàng, mặc dù tôi đoán việc giảm mức sử dụng cookie sẽ chỉ tiết kiệm được một vài phần nghìn giây. Nói chung, hãy chắc chắn rằng bạn chỉ tiết kiệm những gì bạn cần.

Có rất nhiều tối ưu hóa khác mà bạn có thể làm dù, chẳng hạn như:

  • Phục vụ tập tin của bạn như nội dung gzipped
  • Đảm bảo càng nhiều trang web của bạn là bộ nhớ cache có thể
  • Sử dụng CSS sprites và kết hợp tệp javascript + css để giảm yêu cầu HTTP (cũng sẽ giảm tải từ máy chủ của bạn)
  • Giảm bớt javascript, css và html

Đây là tất cả các phương pháp đã được chứng minh để giảm thời gian tải trang.

Để biết thêm thông tin về cách làm cho trang của bạn tải nhanh hơn, hãy tải xuống YSlow! plugin cho firefox/firebug http://developer.yahoo.com/yslow/

+0

vâng ... Tôi chắc rằng các vấn đề về thời gian tải của bạn không liên quan gì đến cookie của bạn –

+0

+1 tất cả các đề xuất phù hợp. –

+0

cho thời gian tải trang chung, tôi không nghĩ rằng tôi đã từng tìm thấy một công cụ tốt hơn thì https://chrome.google.com/extensions/detail/ognampngfcbddbfemdapefohjiobgbdl –

0

+1 cho câu hỏi hay, mặc dù có một ý nghĩa đáng sợ.

Mọi thứ được thực hiện để vượt quá có thể có tác động hiệu suất, mặc dù điều này sẽ bị ảnh hưởng trong hầu hết mọi trường hợp. Tôi không nhận thức được bất kỳ sự tối ưu nào được thực hiện bởi JavaScript để đọc/ghi cookie, nhưng bộ nhớ cache đọc/ghi của hầu hết các bộ điều khiển đĩa sẽ làm mịn i/o này đến điểm cẩu thả.

Tại sao nó đáng sợ?

  1. Cookies có thể có giới hạn kích thước/lượng: http://support.microsoft.com/kb/306070http://en.wikipedia.org/wiki/HTTP_cookie

  2. Cookies có thể được thao tác, vì vậy họ không an toàn (trừ khi bạn đang mã hóa mạnh mẽ các giá trị trong họ, trong đó hiệu suất tác động quá trình và vẫn là một ý tưởng tồi).

  3. Cookie đôi khi bị tắt.

Bạn đã đề cập rằng cơ sở dữ liệu của bạn chậm, nhưng thêm một vài biến phiên sẽ không đặt thêm bất kỳ tải nào trên cơ sở dữ liệu của bạn. Hoặc cố gắng thao tác dữ liệu phía máy khách trong bộ nhớ, hoặc thậm chí truyền một vài biến (thông tin không an toàn, tất nhiên) xung quanh chuỗi truy vấn.

0

Thao tác cookie sẽ không hoạt động hiệu quả. Tuy nhiên, cookie sẽ được gắn thẻ dọc theo một số hoặc tất cả các yêu cầu HTTP của bạn (cả lên và xuống) dựa trên cài đặt đường dẫn và tên miền của cookie của bạn. Nếu bạn có một kilobyte cookie và đang thực hiện 10 yêu cầu trên mỗi trang, về cơ bản bạn sẽ tăng yêu cầu và đáp ứng tải trọng lên 10kb mỗi trang.

Xem ServeFromCookielessDomain để biết thêm chi tiết.