2012-01-12 25 views
9

Trong các ứng dụng web cũ của tôi, khi người dùng chuyển đổi từ một trang "" (không tải lại trang, chỉ cần một div mới) sang một trang khác, tôi chỉ giấu một div để sử dụng sau này và đã tạo + hiển thị hình mới. Khi người dùng quay trở lại từ quản lý địa chỉ để quản lý sự kiện, tôi chỉ cần ẩn div hiện tại và hiển thị lại div đã sử dụng. Tất nhiên, điều này cần bộ nhớ, nhưng nhanh hơn.Bộ nhớ so với tốc độ trong các ứng dụng web Javascript

Trong ứng dụng web mới của tôi, tôi sử dụng Backbone.js, Require.js và jQuery. Tất cả các mô-đun của tôi là AMD (jquery 1.7.1, backbone.js 0.5.3-optamd3, ...).

Sau khi đọc các blog thú vị của Derick Bailey (http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/) Bây giờ tôi xóa sạch các div trước khi chuyển sang một trang mới và tạo lại nó trong trường hợp người dùng quay lại.

Tương tự như vậy, về các mô-đun yêu cầu amd tôi đã sử dụng để có tốc độ trên chiến lược bộ nhớ: Trung tâm điều hướng ứng dụng web của tôi nằm trong đối tượng bộ định tuyến duy nhất của tôi. Nếu người dùng chọn "trang"/tính năng lần đầu tiên, tôi tải mô đun amd (đó là đối tượng xem backbone.js) cho nó và tất cả các phụ thuộc của nó với lệnh require và lưu trữ đối tượng xem kết quả này (với đối tượng mô hình của nó)) để sử dụng sau này trong một mảng trong đối tượng bộ định tuyến. Khi người dùng quay trở lại, tôi lấy đối tượng xem được lưu trữ và hiển thị lại chế độ xem.

Tôi đoán tôi sẽ chuyển từ hành vi này cũng thành luôn tải lại mô-đun (từ bộ nhớ cache), nhưng tôi không chắc chắn.

Để đi theo con đường tốt nhất, tôi muốn có được một sự hiểu biết tốt hơn và muốn hỏi 2 câu hỏi:

  1. Tôi có 5 module AMD. Khi người dùng cần một tính năng, tôi tải và thực hiện một mô-đun và nhận được một đối tượng xem backbone.js như là kết quả, mà tôi lưu trữ trong một mảng trong đối tượng router của tôi. Mỗi mô-đun AMD có Backbone.js (phiên bản AMD) như là một sự phụ thuộc. Khi người dùng đã truy cập tất cả 5 "trang" và tất cả 5 đối tượng xem của tôi được lưu trữ trong mảng của tôi, tôi có 5 bản sao của backbone.js trong bộ nhớ trình duyệt của mình vì mọi phụ thuộc backbone.js được lấy từ bộ nhớ cache và được thực hiện lại, hoặc có bộ thu gom rác đã loại bỏ nó?
  2. Nhà phát triển ứng dụng web khác nghĩ thế nào về tốc độ này trong chiến lược bộ nhớ?

TIẾP THEO Hôm nay tôi tìm thấy một câu hỏi tương tự trên stackoverflow (http://stackoverflow.com/questions/7866971/how-does-amd-specifically-requirejs-handle-dependancies-across-multiple-module). Câu trả lời là: "Nó sẽ chỉ được tải một lần, cả hai mô-đun ở trên sẽ nhận được cùng một giá trị mô-đun ...".

Vì vậy, có vẻ như nó không phải là quá xấu để lưu trữ các kết quả của mô-đun đã được nạp + thực thi để sử dụng sau này.

Wolfgang

Trả lời

2

Cache mọi thứ (có thể được sử dụng nhiều lần). (ghi vào Canvas/ImageData). Bạn chỉ nên có 1 bản sao của khung trong bộ nhớ. Nếu bạn lo ngại có nhiều hơn, hãy viết lại nó để buộc tất cả các AMD sử dụng một Backbone nguồn duy nhất.

Bộ nhớ là tốc độ.

Nếu bạn muốn tốc độ tốt hơn:

  • extern js của bạn tập tin cho bộ nhớ đệm của trình duyệt.
  • Sử dụng LocalStorage
  • Do tính nhất người dùng
  • Giảm thiểu các máy chủ và sắp xếp theo yêu cầu chảy
Các vấn đề liên quan