Tôi đang phục vụ một hình ảnh giữ chỗ với một HTTP header Refresh, như thế này:img thẻ HTML không tôn vinh header HTTP Refresh (nhưng tải URL hình ảnh trong trình duyệt không)
Connection:keep-alive
Content-Type:image/gif
Date:Thu, 01 Aug 2013 14:16:25 GMT
Refresh:10; url=/media/thumbs/document/18.png
Server:nginx/1.4.1
Transfer-Encoding:chunked
Nếu tôi tải hình ảnh URL trình giữ chỗ trong cửa sổ đầy đủ, nội dung được làm mới sau 10 giây, nhưng nếu tôi đặt cùng một URL trong thẻ hình ảnh src
thuộc tính, hình ảnh sẽ không bao giờ được làm mới (được thử nghiệm trong Chrome và FF).
Tại sao tôi làm điều này? Tôi có một ứng dụng mà hình thu nhỏ của một tài liệu mất một vài giây để được tạo ra bởi máy chủ (nó là một kết xuất SVG phức tạp). Khi người dùng truy cập danh sách tài liệu ngay sau khi tạo tài liệu mới, hình thu nhỏ có thể chưa có. Tôi đã cố gắng sử dụng hình ảnh trình giữ chỗ có tiêu đề làm mới để tải hình thu nhỏ thực sau vài giây.
Tôi không thể nhớ lại, nhưng trở lại những ngày cũ của trình duyệt Netscape, một cái gì đó giống như tiêu đề làm mới là cách chúng tôi tấn công hoạt hình đôi khi (trước cả Flash - tôi là thời tiền sử hay gì?). Chúng tôi gọi nó là "đẩy máy chủ" (tôi đoán là từ thông dụng được tái chế với Comet model).
Tôi đang sử dụng Angular.js ở phía máy khách (phía máy chủ là Django + uWSGI + Nginx), vì vậy nó phải đủ dễ dàng để hack cái gì đó bằng javascript, nhưng tôi tò mò: là có bất kỳ mẹo nào (mà không có javascript) để làm cho thẻ hình ảnh tải một nguồn khác sau một vài giây?
(Tôi sẽ tag Django này và Nginx cũng vì có thể ai đó biết một giải pháp server-side)
Tôi ước gì tôi có thể chia tiền thưởng; giải pháp solomonic câm của tôi là chấp nhận câu trả lời của bạn và trao tiền thưởng cho James (tôi có lẽ sẽ khiến cả hai bạn khó chịu, nhưng tốt, cuộc sống là không công bằng). –
@PauloScardine - Cả hai câu trả lời đều thiếu một giải pháp an toàn & phổ quát. Khi bạn bắt đầu nghịch với các tiêu đề HTTP và các kết nối treo hoặc CSS cụ thể của trình duyệt, không phải là tối ưu. Các giải pháp an toàn và phổ biến duy nhất là JavaScript hoặc IFRAME với tính năng làm mới META. –
Tôi không gặp vấn đề gì khi không chấp nhận câu trả lời của mình, nhưng tôi ngạc nhiên về giải pháp CSS đã làm việc cho bạn (trên bất kỳ trình duyệt nào). Đó là một trong những điều đầu tiên tôi đã thử, nhưng đối với tôi, nó dường như luôn tải cả hai hình ảnh lên phía trước, mặc dù hình ảnh thứ hai chỉ được hiển thị sau đó. Tôi nghĩ ý tưởng là để tải hình ảnh thứ hai sau một sự chậm trễ (một khi bạn biết nó sẽ sẵn sàng), không chỉ hiển thị nó sau một sự chậm trễ. –