My chưa được phát hành Ứng dụng Delphi 2010 cho phép người dùng tải tệp của họ lên máy chủ của tôi. Ngay bây giờ tôi đang sử dụng HTTPS POST để gửi các tập tin, các (giản thể) thuật toán về cơ bản là:Làm cách nào để tối ưu hóa quá trình tải lên thường xuyên bằng Delphi 2010?
- chia file thành "lát" (256KB mỗi)
- Đối với mỗi lát, gửi nó đến máy chủ
tức là. cho một tập tin 1MB:
--> Get Slice #1 (256KB)
--> Upload Slice #1 using TidHTTP.Post()
--> Get Slice #2 (256KB)
--> Upload Slice #2 using TidHTTP.Post()
--> Get Slice #3 (256KB)
--> Upload Slice #3 using TidHTTP.Post()
--> Get Slice #4 (256KB)
--> Upload Slice #4 using TidHTTP.Post()
Tôi đang sử dụng Indy 10. Tôi (ab) sử dụng profiler của tôi hơn và hơn và không có nhiều trái để tối ưu hóa ngoại trừ thay đổi thói quen tải lên chính nó.
Tôi cũng đang sử dụng đa luồng, và mặc dù tôi đã làm hết sức mình để tối ưu hóa mã của tôi, tiêu chuẩn của tôi vẫn cho tôi biết tôi có thể làm tốt hơn (có phần mềm tối ưu hóa tốt khác mà làm đạt được một nhiều ! thời gian tốt hơn ... gần gấp đôi nhanh như thường lệ upload của tôi)
tôi biết đó không phải lỗi máy chủ của tôi ... đây là những ý tưởng mà tôi vẫn cần phải khám phá:
tôi đã cố gắng nhóm lát trong một POST duy nhất, tự nhiên điều này dẫn đến tăng hiệu suất (20-35%) nhưng khả năng tiếp tục được giảm xuống.
Tôi cũng nghĩ đến việc sử dụng SFTP/SSH, nhưng tôi không chắc liệu nó có nhanh hay không.
Sử dụng ổ cắm web để triển khai tải lên có thể tiếp tục lại (như this component), tôi cũng không chắc về tốc độ.
Bây giờ câu hỏi của tôi là: có điều gì tôi có thể làm để tăng tốc độ tải lên của mình không? Tôi mở cửa cho bất kỳ gợi ý rằng tôi có thể thực hiện, bao gồm các công cụ dòng lệnh (nếu giấy phép cho phép tôi gửi nó với ứng dụng của tôi), với điều kiện:
- upload thể tiếp tục lại được hỗ trợ
- nhanh!
- sử dụng bộ nhớ hợp lý
- an toàn & cho phép xác thực đăng nhập/user
Ngoài ra, vì lo ngại an ninh lớn, FTP là một không phải là điều tôi muốn thực hiện.
Cảm ơn rất nhiều!
Chuyển khoản có sử dụng tính năng nén/giải nén dữ liệu không? – mjn
những gì ở phía máy chủ? – kobik
@mjn: yes (lát đã được nén trước khi được tải lên + Tôi sử dụng TIdCompressorZLib của Indy) – TheDude