Tối ưu hóa các dòng công việc Shopify Flow
Khi xây dựng dòng công việc, hãy đảm bảo dòng công việc hoạt động hiệu quả nhất có thể. Tài liệu này phác thảo các tình huống có thể khiến dòng công việc bị điều tiết tốc độ hoặc vượt quá giới hạn API, cũng như các mẹo để giải quyết hoặc dùng giải pháp thay thế tạm thời cho những sự cố đó.
Trên trang này
Các sự cố hiệu suất thường gặp
Phần này phác thảo các tình huống thường gặp có thể gây ra sự cố hiệu suất cho dòng công việc. Có thể xảy ra nhiều tình huống cùng lúc, làm tăng khả năng bạn gặp phải sự cố hiệu suất. Đối với các lỗi liên quan đến cấu hình trình biên tập hoặc giới hạn tốc độ, hãy dùng hướng dẫn khắc phục sự cố.
Yếu tố kích hoạt số lượng lớn
Yếu tố kích hoạt số lượng lớn là những yếu tố mà sự kiện cơ bản xảy ra thường xuyên. Ví dụ: yếu tố kích hoạt Product variant inventory quantity changed (Số lượng hàng tồn kho của biến thể sản phẩm thay đổi) sẽ chạy đối với mỗi thay đổi về hàng tồn kho trong cửa hàng. Số lượng của một yếu tố kích hoạt đóng vai trò là hệ số nhân cho bất kỳ vấn đề nào trong dòng công việc. Ví dụ: nếu dòng công việc lấy dữ liệu 100 sản phẩm và chạy 1.000 lần mỗi phút thì sẽ lấy dữ liệu 100.000 sản phẩm mỗi phút. Điều này có thể gây ra sự cố hiệu suất.
Giải pháp: Tối ưu hóa dòng công việc bằng cách dùng ít dữ liệu hơn, hoặc sử dụng bước chờ để phân vùng dòng công việc.
Nhiều dòng công việc dùng chung yếu tố kích hoạt
Trong Flow, bạn có thể xây dựng nhiều dòng công việc dùng chung yếu tố kích hoạt. Các dòng công việc này sẽ chạy song song khi sự kiện xảy ra. Điều này có thể gây ra sự cố nếu chạy quá nhiều dòng công việc dùng chung một yếu tố kích hoạt vì những lý do sau:
- Các dòng công việc có thể xung đột với nhau.
- Các dòng công việc cố gắng lấy dữ liệu và gọi API cùng một lúc, và cửa hàng bị hạn chế số lượng yêu cầu có thể xử lý cùng lúc theo giới hạn API Shopify.
Giải pháp: Kết hợp các dòng công việc dùng chung yếu tố kích hoạt thành một dòng công việc duy nhất. Việc này cũng cho phép kiểm soát thời điểm thực thi của mỗi dòng công việc để chúng không xung đột với nhau. Kết hợp dòng công việc đặc biệt hữu ích nếu các dòng công việc không lấy nhiều dữ liệu hoặc dữ liệu lấy về là giống nhau. Nếu các dòng công việc lấy nhiều dữ liệu khác nhau, thì việc tách riêng chúng có thể mang lại hiệu suất tốt hơn.
Sử dụng danh sách hoặc dữ liệu không chính xác
Khi xây dựng dòng công việc, bạn có thể dùng một danh sách đối tượng, chẳng hạn như sản phẩm hoặc đơn hàng. Nếu sử dụng danh sách đối tượng, Flow sẽ lấy toàn bộ đối tượng trong danh sách. Điều này có thể gây ra sự cố nếu danh sách chứa nhiều dữ liệu.
Một sự cố thường gặp khác là vô tình chọn sai dữ liệu. Ví dụ: để kiểm tra dữ liệu sản phẩm trong một đơn hàng, bạn có thể đã chọn order / publication / products / tags thay vì order / line items / product / tags. Kết quả đầu tiên thường không chính xác, vì thao tác này lấy toàn bộ sản phẩm của một ấn phẩm trong khi mục đích là kiểm tra sản phẩm trong đơn hàng. Việc chọn một danh sách lớn như vậy có thể gây ra sự cố hiệu suất và chọn sai danh sách có thể khiến quy trình tự động hóa thực hiện sai tác vụ.
Giải pháp: Chọn cẩn thận dữ liệu cần dùng và tránh sử dụng danh sách khi không cần thiết. Kiểm tra dòng công việc để đảm bảo chúng hoạt động như mong đợi.
Trường siêu dữ liệu
Việc lấy dữ liệu của trường siêu dữ liệu hoặc siêu đối tượng riêng lẻ thường không gây ra sự cố hiệu suất. Tuy nhiên, sự cố thường gặp là chọn danh sách metafields và lặp qua toàn bộ trường siêu dữ liệu trên một tài nguyên. Nếu một trường value (giá trị) chứa nhiều dữ liệu, ví dụ như khi dùng đối tượng HTML, thì thao tác này có thể dẫn đến việc xử lý lượng lớn dữ liệu và có khả năng gây ra sự cố hiệu suất.
Giải pháp: Sử dụng đối tượng metafield thay vì metafields.
Lạm dụng thao tác Lấy dữ liệu
Dòng công việc dùng thao tác Lấy dữ liệu như Lấy dữ liệu đơn hàng được thiết kế để trả về tối đa 100 đối tượng cho mỗi dòng công việc từ thao tác Lấy dữ liệu. Vượt quá 100 đối tượng có thể gây ra sự cố hiệu suất.
Giải pháp: Chạy dòng công việc thường xuyên hơn để truy vấn không cần trả về hơn 100 kết quả. Tái sử dụng cùng một thao tác Lấy dữ liệu thay vì thực hiện truy vấn lặp lại.
Không có bộ lọc truy vấn trong thao tác Lấy dữ liệu
Thao tác Lấy dữ liệu sẽ gọi API Shopify. Nếu không có truy vấn, API sẽ trả về toàn bộ hoặc không trả về tài nguyên nào. Điều này có thể gây ra sự cố hiệu suất, đồng thời có thể dẫn đến việc thực hiện sai thao tác trong cửa hàng khi sử dụng dữ liệu trả về ở phần sau của dòng công việc.
Giải pháp: Luôn thêm bộ lọc truy vấn vào thao tác Lấy dữ liệu.
Bộ lọc truy vấn không chính xác trong thao tác Lấy dữ liệu
Truy vấn Lấy dữ liệu hỗ trợ một tập hợp hạn chế các bộ lọc truy vấn, một cú pháp cụ thể và một tập hợp giá trị cụ thể có thể dùng trong bộ lọc. Việc nhập sai bộ lọc, giá trị bộ lọc hoặc cú pháp có thể khiến toàn bộ truy vấn bị bỏ qua, gây ra sự cố tương tự như khi không có bộ lọc truy vấn.
Giải pháp: Tham khảo tài liệu được cung cấp trong thao tác của Flow để tìm danh sách bộ lọc truy vấn khả dụng. Luôn kiểm tra bộ lọc truy vấn để đảm bảo chúng trả về dữ liệu mong đợi. Bạn có thể sử dụng thao tác Ghi nhật ký đầu ra trong Flow để xem lại dữ liệu trả về, hoặc gọi trực tiếp Shopify Admin API thông qua máy khách API như Postman hay ứng dụng GraphiQL.
Giải pháp bổ sung cho các sự cố hiệu suất thường gặp
Sử dụng bước Chờ để trì hoãn quá trình lấy dữ liệu
Bước chờ cho phép tạm dừng dòng công việc trong một khoảng thời gian cụ thể, ngoài ra cũng có thể dùng để tối ưu hóa dòng công việc. Mỗi bước chờ sẽ chia hiệu quả quá trình thực thi dòng công việc thành các giai đoạn riêng biệt. Khi chạy, dòng công việc tự động lấy dữ liệu cần thiết cho đến bước chờ đầu tiên (và lấy dữ liệu lần nữa sau bước chờ cho phần còn lại của dòng công việc).
Nếu dòng công việc sử dụng yếu tố kích hoạt số lượng lớn và lấy nhiều dữ liệu, nhưng chỉ thỉnh thoảng mới thực hiện thao tác, thì bạn có thể đặt bất kỳ dữ liệu hoặc logic phức tạp nào sau một cặp điều kiện và bước chờ. Ví dụ:
- Yếu tố kích hoạt: Số lượng hàng tồn kho của biến thể sản phẩm thay đổi.
- Điều kiện: Kiểm tra xem sản phẩm có nằm trong bộ sưu tập không.
- Nếu đúng, Thao tác: Chờ 2 giây.
- Thao tác: Gửi email cho khách hàng (có nhiều dữ liệu).
Trong ví dụ này, dữ liệu cần cho bước 4 chỉ được truy vấn sau khi bước Chờ hoàn tất. Nếu điều kiện thường xuyên là sai, thì điều này có nghĩa là dòng công việc sẽ chạy nhanh và hiệu quả hơn.
Những gì không nên tối ưu hóa
Dùng chung dữ liệu trong nhiều thao tác
Khi dùng chung một trường trong nhiều bước, Flow sẽ phân tích cách sử dụng các trường đó và chỉ lấy dữ liệu đó một lần. Điều này có nghĩa là bạn có thể dùng dữ liệu bao nhiêu lần tùy ý mà không lo ảnh hưởng đến hiệu suất.