2010-02-11 16 views
5

Thay vì tôi nhấn cơ sở dữ liệu mỗi lần một người nào đó nhập ký tự vào hộp tìm kiếm, tôi muốn tạo tệp .js tĩnh.Sản phẩm 20K sử dụng tính năng tự động hoàn thành, muốn tạo các tệp JavaScript tĩnh

Một số kỹ thuật tôi có thể sử dụng để tạo tệp .js tĩnh là mảng cơ bản để tải plugin tự động hoàn thành jquery.

Sản phẩm của tôi nhìn sku của như:

ABC1234 

hoặc

Alpha Beta C 1234 

(abc là hình thức viết tắt của tên nhà sản xuất, trong khi 'Alpha Beta C' là hình thức lâu, tiếp theo là 3 -4 số).

+0

Chỉ 20.000?!?! –

Trả lời

2

Đây là một sử dụng tuyệt vời cho JSON. Ký hiệu đối tượng Javascript. Bạn chỉ có thể bao gồm các tệp JS và bạn sẽ có tất cả dữ liệu của mình trong các đối tượng.

http://www.json.org

var products = [{sku:'aaaa', price: 50}, {sku:'bbbb', price: 60}]; 

Vui lòng kiểm tra cú pháp của tôi, nó là từ bộ nhớ.

+0

Tùy thuộc vào ràng buộc băng thông và độ dài của từng tên sản phẩm, tải trang đầu tiên có thể là một doozey. –

+0

Tôi chắc chắn sẽ đảm bảo rằng trình tải tập lệnh js nằm ở cuối trang. –

+1

Đúng vậy. Những gì bạn có thể muốn làm là đặt tập tin JSON vào phần cuối của một cuộc gọi AJAX. Bằng cách đó bạn không tải toàn bộ cơ sở dữ liệu trong trang lúc chạy và bạn cũng không nhấn db mỗi lần. Điều này sẽ hoạt động trừ khi cơ sở dữ liệu sản phẩm của bạn được cập nhật liên tục. – chamiltongt

1

Bạn cũng có thể gửi tất cả các khả năng còn lại trong JSON qua cuộc gọi AJAX chỉ sau 2/3 tổ hợp phím và trích xuất các kết quả còn lại từ đối tượng/mảng đó (Tôi không biết liệu JQuery có hỗ trợ hành vi này) hay không. Điều này tiết kiệm băng thông, vì không phải toàn bộ cơ sở dữ liệu của bạn phải được gửi đến máy khách và bạn không phải gọi cơ sở dữ liệu nhiều lần (thông thường, nếu các phím đầu tiên là chính xác).

Tôi không chắc liệu câu hỏi của bạn có liên quan đến phía máy chủ hay không, do đó, chỉ FYI, hãy xem PHP's JSON functions (đặc biệt là json_encode) để đọc thêm về nó.

+0

Vâng, việc gửi một cơ sở dữ liệu bán gần JS cho khách hàng có vẻ đau đớn –

0

Bạn có thể tạo một máy trạng thái hữu hạn được thu nhỏ (ví dụ: DAWG) chứa các nút cuối cùng cho tất cả các mã sản phẩm của bạn tồn tại. Sau đó lưu trữ điều này trong một số định dạng được tối ưu hóa trong một chuỗi Javascript (hoặc một số nhỏ của chuỗi).

Các chuỗi này sau đó có thể được gửi tới trình duyệt, có thể sẽ không mất nhiều thời gian để tải.

Sau đó, bạn có thể duyệt qua máy trạng thái tùy thuộc vào số lượng ký tự đã nhập và tìm kiếm hiệu quả tất cả các mã sản phẩm bắt đầu bằng các ký tự đó.

Đó là cách tôi vẫn làm.

Hoặc có thể chỉ tải toàn bộ từ điển vì 20k không phải là nhiều. Tôi đã viết một trò chơi Javascript tải một từ điển lớn hơn và không phải là một vấn đề thực sự.

+0

Ông nói 20K * sản phẩm *, không phải 20K byte.Nếu một bản ghi sản phẩm được biểu diễn bằng 100 byte JSON, bạn sẽ phải tải xuống 2 MB dữ liệu JSON để có được toàn bộ cơ sở dữ liệu. –

+0

Chỉ để lưu trữ mã sản phẩm, không nên mất 100 byte và ít hơn đáng kể nếu bạn lưu trữ chúng hiệu quả và nén mã đó. Tôi nghĩ rằng 10 byte là thực tế hơn. – MarkR

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