2008-09-24 25 views
8

Tôi có URL có dạng http://domain/image/⟨uuid⟩/42x42/some_name.png. Các máy chủ Web (nginx) được cấu hình để tìm kiếm một tập tin /some/path/image/⟨uuid⟩/thumbnail_42x42.png, và nếu nó không tồn tại, nó sẽ gửi URL đến backend (Django thông qua mod_wsgi) mà sau đó tạo ra các hình thu nhỏ. Sau đó, chương trình phụ trợ phát ra chuyển hướng 302 đến chính xác cùng một URL được khách hàng yêu cầu, với ý tưởng rằng khi yêu cầu thứ hai này, máy chủ sẽ nhận thấy tệp hình thu nhỏ và gửi trực tiếp.Có an toàn để chuyển hướng đến cùng một URL không?

Câu hỏi đặt ra là, điều này có hoạt động với tất cả các trình duyệt không? Cho đến nay thử nghiệm đã cho thấy không có vấn đề, nhưng tôi có thể chắc chắn rằng tất cả các tác nhân người dùng sẽ giải thích điều này như dự định?

Cập nhật: Hãy để tôi làm rõ ý định. Hiện tại, công trình này hoạt động như sau:

  1. Khách hàng yêu cầu hình thu nhỏ của hình ảnh.
  2. Máy chủ thấy tệp không tồn tại, do đó, nó chuyển tiếp yêu cầu tới chương trình phụ trợ.
  3. Phần phụ trợ tạo hình thu nhỏ và trả lại 302.
  4. Phần cuối phụ trợ tất cả tài nguyên, cho phép máy chủ chia sẻ tệp mới được tạo cho khách hàng hiện tại và khách hàng tiếp theo.

Có phụ trợ phục vụ hình ảnh mới được tạo ra là tồi tệ hơn vì hai lý do:

  1. Hai cách phục vụ cùng một dữ liệu phải được tạo ra;
  2. Máy chủ phục vụ nội dung tĩnh tốt hơn nhiều. Điều gì nếu khách hàng có liên kết cực kỳ chậm? Phần phụ trợ không phải là đặc biệt nhanh hay bộ nhớ hiệu quả, và giữ nó trong bộ nhớ trong khi việc cho ăn thìa của khách hàng có thể lãng phí.

Vì vậy, tôi giữ cho chương trình phụ trợ hoạt động trong khoảng thời gian tối thiểu.

Cập nhật²: Tôi thực sự đánh giá cao một số tham chiếu hoặc ý kiến ​​của RFC về người có trải nghiệm với nhiều trình duyệt. Tất cả những câu trả lời khẳng định là dễ chịu nhưng họ trông hơi vô căn cứ.

Trả lời

1

Nếu không, khách hàng đã bị hỏng. Hầu hết khách hàng sẽ thực hiện theo các vòng chuyển hướng cho đến khi có giá trị tối đa. Vì vậy, có, nó sẽ là tốt cho đến khi phụ trợ của bạn không tạo ra các hình thu nhỏ vì lý do nào.

Bạn thay vì có thể thay đổi URL được http://domain/djangoapp/generate_thumbnail và đó sẽ trở lại hình thu nhỏ và thích hợp content-type và vân vân

0

Vâng, nó là tốt để tái trực tiếp với cùng URI như bạn đang ở trước đó.

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