2014-10-01 70 views
15

Khi tôi nhấn nút <== back trong trình duyệt, điều gì đang xảy ra?Điều gì sẽ xảy ra khi bạn quay lại trình duyệt?

  • Truy vấn có cùng URL được tạo lại không?
  • Trạng thái DOM hiện tại đã được lưu và khôi phục chưa? (Chỉ HTML)
  • Trạng thái trang hiện tại đã được lưu và khôi phục chưa? (HTML + Javascript)
  • Máy chủ có được truy vấn không nhưng nếu gửi unchanged thì bộ nhớ cache cục bộ sẽ được sử dụng?
  • Nói chung, chúng tôi có thể xem xét chúng tôi có thông tin cập nhật trên trang trước không?

Tôi không rõ ràng vì những tình huống:

  • Stackoverflows đôi khi xử lý upvotes của tôi rất nặng (không hiển thị nó, ngăn không cho tôi ra khỏi hoàn tác vì tôi cuối cùng bình chọn 5 phút trước, nhưng đó là trong một tab khác vv .)
  • Khi tôi làm việc trên môi trường địa phương, tôi không có nhiều cảm giác được truy vấn sau đó
  • Tôi luôn không chắc chắn về những gì sẽ xảy ra khi trở lại, do đó là người phát triển, tránh sử dụng nó nhiều nhất có thể (chỉ để tìm lại một URL trong lịch sử)

Ý kiến ​​của tôi là truy vấn lại sẽ là ý tưởng tốt nhất, nhưng nó không phải là nhanh nhất, và trình duyệt có thể muốn chạy nhanh trong trường hợp đó (để gây ấn tượng với người dùng) ... Mặt khác, lưu trữ bang trang phải tốn nhiều bộ nhớ ...

+0

Câu hỏi hay, tôi nghĩ nó giữ HTML và JS, nhưng tôi không chắc chắn, có thể nó thay đổi trong các trình duyệt khác nhau – Balder

+2

Tùy thuộc vào trình duyệt. Khi bạn nhấn lại, thường sẽ không có gì được truy vấn và bộ nhớ cache sẽ được sử dụng để tải trang. Vấn đề thường là khi bạn đã sử dụng JavaScript trên một trang và bạn tải lại nó từ bộ nhớ cache. – bzeaman

Trả lời

6

Điều đó tùy thuộc.

Tùy thuộc vào phương thức yêu cầu HTTP. Nếu trang ĐƯỢC NHẬN, trình duyệt có thể quyết định lưu vào bộ nhớ cache và không yêu cầu lại. POST và các phương thức HTTP khác không được lưu trong bộ nhớ cache vì chúng có thể có phía máy chủ tác dụng phụ. Đây là lý do tại sao bạn thậm chí còn nhận được hộp thoại cảnh báo nếu bạn quay lại trang đã được tải bởi yêu cầu POST.

Tùy thuộc vào tiêu đề bộ nhớ đệm.(See here) Các trang được phép lưu trữ rõ ràng như được mô tả trong tiêu đề của chúng có thể được sử dụng lại khi điều hướng trở lại.

Tùy thuộc vào trình duyệt. Một số đã tối ưu hóa rất nhiều cho trải nghiệm người dùng (nhiều bộ nhớ đệm hơn, tốc độ nhanh hơn, độ nhám hơn). Nơi những người khác đơn giản hơn và chỉ cần yêu cầu lại trang.

Tùy thuộc vào mức sử dụng bộ nhớ, đặc biệt là trên thiết bị di động. Trình duyệt có thể quyết định không giữ nội dung trang và nêu rõ trang đó có lớn hay không có nhiều bộ nhớ khả dụng.

Trình duyệt là những phần mềm phức tạp và những người thông minh đang làm việc để tối ưu hóa chúng trong một thời gian rất dài.


Theo như những gì trình độ của bộ nhớ đệm được sử dụng để điều hướng trở lại, tôi nghĩ rằng có ba cấp độ chính

(điều này có lẽ là một oversimplication, nhưng nó sẽ cung cấp cho bạn những ý tưởng chung.)

  1. Uncached. Trang được yêu cầu lại.
  2. Nội dung được lưu trong bộ nhớ cache. Nội dung và nội dung được lưu trong bộ nhớ cache khi chúng đến từ máy chủ. Điều này có lẽ không yêu cầu bộ nhớ, chỉ là không gian đĩa, vì nó có thể không phải là rất nhiều dữ liệu.
  3. Trạng thái được lưu trong bộ nhớ cache. Trạng thái DOM, giá trị JS, giá trị trường biểu mẫu, tất cả được lưu trong bộ nhớ. Điều này có thể đòi hỏi rất nhiều bộ nhớ, và có lẽ không được ghi vào đĩa vì nó có thể là nhiều megabyte tùy thuộc vào trang.
1

các đặc điểm kỹ thuật của đại lý (các trình duyệt bao gồm) trong các trang web W3C, nói: http://www.w3.org/TR/2014/WD-UAAG20-Reference-20140925/#sc_315

Nó cũng có lợi cho người dùng mà chuyển hướng là tốn thời gian , mệt mỏi, hoặc đau đớn, bởi vì nó cho phép họ tránh phải nhập lại URL dài. Tính năng Quay lại là một phần của giao diện người dùng UA thay vì của nội dung được hiển thị.

Giải thích có thể có thể là: "Quay lại, nhưng đừng mất dữ liệu!" mỗi trình duyệt xác định nút quay lại của riêng mình.

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