Lý do duy nhất tôi có thể nghĩ là tính toán ETag
có thể tốn kém. Nếu các trang thay đổi rất nhanh, bộ nhớ cache của trình duyệt có thể bị vô hiệu bởi ETag
. Trong trường hợp đó, việc tính toán ETag
sẽ là một sự lãng phí thời gian. Mặt khác, đưa ra một phản ứng 304
khi có thể giảm thiểu lượng thời gian được sử dụng trong truyền dẫn. Một số hướng dẫn tốt cho thời điểm ETag
có khả năng là người chiến thắng ròng khi được triển khai với số CommonMiddleware
của Django?Bất kỳ lý do nào không sử dụng USE_ETAGS với CommonMiddleware ở Django?
Trả lời
Tôi không hiểu tại sao bạn đang tìm kiếm lý do để không làm điều gì đó. Tuy nhiên, phân tích của bạn vẫn chưa hoàn thành: các yêu cầu có điều kiện/304 phản hồi thực sự có thể khiến ứng dụng của bạn chậm hơn đáng kể so với nếu bạn loại bỏ if-modified-since/if-none-match. server-máy chủ sao chép (ví dụ trên CDN)
C.
Như với bất kỳ cơ chế bộ nhớ đệm, bạn sẽ cần phải đánh giá thương mại-off giữa thời gian dành cho thao tác bộ nhớ cache và băng thông lưu vì điều đó.
Như bạn nói, nếu phản hồi thay đổi thường xuyên, các thẻ ETAG có thể không hữu ích. ETags là một phương pháp cho bộ nhớ đệm toàn bộ câu trả lời, vì vậy nếu phản hồi thay đổi thường không nhiều thực sự được lưu trữ. Tuy nhiên, tôi đoán rằng vì ETags đang được sử dụng phổ biến, việc triển khai trình duyệt nhanh hơn và Django có lẽ cũng đủ nhanh.
Có thể có các khu vực khác trước phản hồi có thể hưởng lợi từ bộ nhớ đệm với, ví dụ như memcached.
Một lần nữa, sẽ có ích khi thử lược tả điều này bằng dữ liệu thực của bạn thay vì khái quát "làm hoặc không sử dụng nó".
Có rất nhiều cách để xử lý bộ nhớ đệm, và thường là ứng dụng cụ thể, tôi đề nghị trong các kịch bản đầu tiên như thế nào bạn có thể xem xét sử dụng USE_ETAGS
từ django.middleware.common.CommonMiddleware
:
Tách ứng dụng của bạn giữa cache và gunicorn non-cacheable trường hợp. Nối trang web với proxy ngược. Sau đó tiếp tục với,
Viết mã làm mất hiệu lực bộ nhớ cache khi lưu mô hình. Bước tiếp theo,
Viết phần mềm trung gian lưu vào bộ nhớ đệm tùy chỉnh của riêng bạn.
- 1. Bất kỳ lý do gì để vẫn sử dụng CVS?
- 2. Bất kỳ lý do nào không sử dụng SQLObject trên SQLAlchemy?
- 3. Có bất kỳ lý do thông thường nào để sử dụng open() thay vì fopen() không?
- 4. Bất kỳ lý do nào để sử dụng byte/ngắn, v.v. trong C#?
- 5. Có bất kỳ lý do nào để sử dụng luồng hay không.Lock over multiprocessing.Lock?
- 6. Có bất kỳ lý do nào khiến cơ sở dữ liệu h2 không được sử dụng trong sản xuất không?
- 7. API MapQuest: Bất kỳ lý do gì để sử dụng nó trên Google Maps?
- 8. Django: bất kỳ việc sử dụng blocktrans nào khiến TemplateSyntaxError
- 9. Thẻ biểu mẫu HTML không có thuộc tính - bất kỳ lý do nào không?
- 10. Giá trị float không đổi trong trình đổ bóng GLSL - bất kỳ lý do nào để sử dụng đồng phục?
- 11. Có bất kỳ lý do nào khiến tôi không nên sử dụng ObjectId trong địa chỉ REST2 của tôi là
- 12. Bất kỳ lý do nào cho mệnh đề GROUP BY không có chức năng tổng hợp?
- 13. Lý do không sử dụng IFrame?
- 14. Bất kỳ ai đã sử dụng Django và JQuery Autocomplete?
- 15. Lý do không sử dụng Thread.join()
- 16. Có bất kỳ bất lợi nào đối với SEAM không?
- 17. Có default_if_none có bất kỳ sử dụng nào trong các mẫu Django không?
- 18. Bất kỳ lý do nào để ủng hộ cú pháp MathML trên TeX trong MathJax?
- 19. Bất kỳ kinh nghiệm sử dụng PostSharp nào với ReSharper
- 20. Bất kỳ lý do nào tại sao PresentationTraceSources.TraceLevel = Cao sẽ không in bất kỳ thông tin nào vào cửa sổ đầu ra?
- 21. Có thẻ HTML nào có thể được sử dụng ở bất kỳ đâu trong DOM không?
- 22. Có lý do nào để không sử dụng AssertionHelper với NUnit không?
- 23. Sử dụng 'bộ lọc django' với trường LỰA CHỌN - cần tùy chọn "Bất kỳ"
- 24. Có bất kỳ lý do cú miễn phí nào có thể lý do mà không tải tất cả dữ liệu vào bộ nhớ không?
- 25. là có bất kỳ lý do tại sao Async.Sleep không thể hủy bỏ ngay lập tức?
- 26. Bất kỳ lý do nào tốt cho tệp tiêu đề C++ không bao gồm bất kỳ tệp tiêu đề nào khác?
- 27. Django front-end: bất kỳ mẫu hoặc giải pháp sẵn sàng để sử dụng nào?
- 28. Bất kỳ ai sử dụng Qi4J
- 29. Xử lý sự kiện chuột ở bất kỳ đâu với JavaFX
- 30. Bất kỳ giải pháp hiện có nào để thực hiện "giờ mở cửa" ở Django
Câu trả lời này không hữu ích vì nhiều lý do: 1) Câu thứ hai của bạn chứa một số ý tưởng có thể chia thành nhiều câu. 2) Tại sao tôi không nên tìm kiếm một lý do chính đáng để không làm điều gì đó? 3) Bạn nói rằng 304 câu trả lời có thể làm mọi thứ chậm hơn mà không giải thích lý do. Trong khi bạn đã đề cập một cái gì đó về việc không sử dụng if-modified-since (không chắc chắn cách thức này áp dụng cho ETag) và các tiêu đề if-none-match, nhưng đó không thực sự là giải thích. 4) "họ làm cho công cụ tìm kiếm hạnh phúc"? Hấp dẫn, nhưng vô cùng mơ hồ. – allyourcode