Hiệu suất frontend khủng khiếp trên các hình thức CCK lớn = UX kém. Những lựa chọn của tôi là gì?


7

Tôi có một hình thức nút khá lớn cho một trong các loại nội dung của tôi. Hãy nói rằng nó có khoảng 100 lĩnh vực. Rất nhiều trong số các trường này là các giá trị văn bản có giá trị không giới hạn, vì vậy người dùng sử dụng nút AJAX để 'Thêm một mục khác' cho mỗi trường này. Trực quan, hình thức này không đáng sợ lắm, vì tôi đã sử dụng Nhóm trường để giữ mọi thứ hợp lý.

Vấn đề: Nhấp vào 'Thêm một mục khác' là rất chậm. Giống như thực sự chậm.

Tôi đã hình dung đó là hiệu năng của máy chủ, nhưng sau đó tôi đã kiểm tra nó trong Fireorms - yêu cầu không thực sự mất nhiều thời gian, nhưng WOW - sử dụng CPU phía máy khách (trong Chrome, Firefox và bất kỳ trình duyệt nào khác tôi đã thử) đạt 100% và ở đó tối đa 11-12 giây và sau đó yêu cầu AJAX hoàn thành.

Điều đó thật điên rồ.

Vì vậy, tại thời điểm này tôi không chắc lựa chọn của mình là gì. Tôi có thể phá vỡ các hình thức bằng cách nào đó? Phong cách làm việc-ng? Rất nhiều người đề cập đến Nhóm trường như một cách để tổ chức một tấn các lĩnh vực, nhưng điều đó rõ ràng không giúp ích gì cho hiệu suất.

Bất kỳ trợ giúp đánh giá cao.

Câu trả lời:


2

Tôi có chính xác vấn đề này và tôi có thể xác nhận câu trả lời số 1 - sử dụng biểu mẫu nhiều bước cải thiện hiệu suất, mặc dù nó vẫn chậm.

Vấn đề là khi Ajax khai hỏa, toàn bộ biểu mẫu được xây dựng lại trong nền. Điều này dường như tạo ra nhu cầu rất lớn đối với CPU máy chủ nếu hình thức lớn.

Một hình thức nhiều bước là một cách tốt để cải thiện mọi thứ nhưng không may là không phải lúc nào cũng phù hợp - trong trường hợp của tôi, khách hàng đã từ chối vì họ cảm thấy quá khó chịu khi phải tiến hành biểu mẫu theo tuyến tính từng bước đường. Họ muốn có thể nhảy từ tab này sang tab khác mà không lưu ở giữa.

Khác với việc sửa lõi Drupal để xây dựng lại biểu mẫu không cần 20 giây CPU tối đa, giải pháp duy nhất tôi có thể nghĩ đến là dùng thử trang web trên gói lưu trữ CPU cao, ví dụ như trên Amazon AWS. Đây sẽ là bước tiếp theo của tôi.

Nếu không biết nhiều về lõi Drupal và Ajax, tôi sẽ gọi đây là lỗi của các loại. Tôi đã nghe nói rằng hiệu suất của Ajax đang được cải thiện trong Drupal 8 vì vậy tôi thực sự nghi ngờ nhiều nỗ lực sẽ giải quyết vấn đề này trong D7.

Nếu tôi đã biết tất cả những điều này khi bắt đầu dự án, tôi có thể đã thử các giải pháp như kết hợp một số dạng nút trên một bảng điều khiển theo tab - để phá vỡ tải máy chủ theo những cách sáng tạo hơn.


1

Bạn có thể nên sử dụng một hình thức nhiều bước. Điều này có thể được thực hiện gần như dễ dàng bằng cách sử dụng bộ mô-đun CTools .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.