Lý lịch
Tôi đang viết và sử dụng một công cụ quản lý nội dung dựa trên CGI (Perl) rất đơn giản cho hai trang web pro-bono. Nó cung cấp cho người quản trị trang web các biểu mẫu HTML cho các sự kiện trong đó họ điền vào các trường (ngày, địa điểm, tiêu đề, mô tả, liên kết, v.v.) và lưu nó. Trên mẫu đó tôi cho phép quản trị viên tải lên một hình ảnh liên quan đến sự kiện. Trên trang HTML hiển thị biểu mẫu, tôi cũng đang hiển thị bản xem trước của hình ảnh được tải lên (thẻ HTML img).
Vấn đề
Vấn đề xảy ra khi quản trị viên muốn thay đổi hình ảnh. Anh ta chỉ cần nhấn nút "duyệt", chọn một hình ảnh mới và nhấn ok. Và điều này hoạt động tốt.
Khi hình ảnh được tải lên, CGI back-end của tôi xử lý việc tải lên và tải lại biểu mẫu đúng cách.
Vấn đề là hình ảnh hiển thị không được làm mới. Hình ảnh cũ vẫn được hiển thị, mặc dù cơ sở dữ liệu giữ đúng hình ảnh. Tôi đã thu hẹp nó xuống thực tế là HÌNH ẢNH ĐƯỢC BẮT ĐẦU trong trình duyệt web. Nếu quản trị viên nhấn nút RELOAD trong Firefox / Explorer / Safari, mọi thứ sẽ được làm mới tốt và hình ảnh mới sẽ xuất hiện.
Giải pháp của tôi - Không hoạt động
Tôi đang cố gắng kiểm soát bộ đệm bằng cách viết một lệnh hết hạn HTTP với một ngày rất xa trong quá khứ.
Expires: Mon, 15 Sep 2003 1:00:00 GMT
Hãy nhớ rằng tôi đứng về phía hành chính và tôi không thực sự quan tâm nếu các trang mất nhiều thời gian hơn để tải vì chúng luôn hết hạn.
Nhưng, điều này cũng không hoạt động.
Ghi chú
Khi tải lên một hình ảnh, tên tệp của nó không được lưu trong cơ sở dữ liệu. Nó được đổi tên thành Image.jpg (đơn giản là mọi thứ khi sử dụng nó). Khi thay thế hình ảnh hiện tại bằng một hình ảnh mới, tên cũng không thay đổi. Chỉ cần nội dung của tập tin hình ảnh thay đổi.
Máy chủ web được cung cấp bởi dịch vụ lưu trữ / ISP. Nó sử dụng Apache.
Câu hỏi
Có cách nào để buộc trình duyệt web KHÔNG lưu trữ những thứ từ trang này, thậm chí không phải hình ảnh không?
Tôi đang tung hứng với tùy chọn thực sự "lưu tên tệp" với cơ sở dữ liệu. Bằng cách này, nếu hình ảnh bị thay đổi, src của thẻ IMG cũng sẽ thay đổi. Tuy nhiên, điều này đòi hỏi rất nhiều thay đổi trên toàn trang web và tôi không làm điều đó nếu tôi có giải pháp tốt hơn. Ngoài ra, điều này sẽ vẫn không hoạt động nếu hình ảnh mới được tải lên có cùng tên (giả sử hình ảnh được photoshop một chút và tải lên lại).