อัปโหลดรูปแล้วรูปไม่เปลี่ยน

ปัญหาอย่างหนึ่งของ Ajax เมื่อทำการอัปโหลดรูปใหม่ด้วย Ajax แล้วไม่สามารถสามารถแสดงรูปใหม่ได้ ถึงแม้จะใช้ Javascript เพื่อกำหนด src ใหม่ให้กับรูปภาพแล้ว หรือแม้กระทั่งบางครั้งการเปลี่ยนรูปภาพด้วยวิธีปกติ โดยใช้ชื่อเดิม ก็ยังอาจให้ผลลัพท์เป็นรูปเดิมได้เหมือนกัน

ปัญหานี้ก็เป็นเรื่องเดิมๆของ Browser แหละครับ ก็คือเรื่องเกี่ยวกับ Cache เมื่อไรก็ตามที่เราเรียกใช้ไฟล์ชื่อเดิม และไฟล์นี้เคยถูกโหลดมาแล้ว เราก็อาจจะได้ไฟล์ที่ถูกเก็บอยู่ใน Cache มา ซึ่งไม่ได้ถูกจำกัดเฉพาะรูปภาพนะครับแต่ยังรวมถึงไฟล์อื่นๆได้ด้วย

ทางแก้ไข ถ้าเป็นไฟล์ทั่วๆไป ก็สามารถกำหนด header ไม่ให้ไปเอาจาก Cache ก็ได้ครับ แต่ถ้าเป็น รูปภาพ เราก็อาจใช้วิธีเปลี่ยน URL ไม่ให้ซ้ำเดิมครับ

เทคนิคการเปลี่ยน URL ของรูปไม่ให้ซ้ำเดิมในกรณีที่เราไม่สามารถเปลี่ยนชื่อของไฟล์ได้ ก็อาจทำได้โดยการเติม ตัวเลข หรือ ตัวหนังสือต่อท้ายชื่อไฟล์เป็น query ก็ได้ครับ เช่น

http://zzz.xxx.com/image/pic.jpg?1234578

โดยที่เงื่อนไขที่สำคัญก็คือ ตัวหนังสือที่เป็น query ที่ต้่อท้าย url ของรูปภาพต้องไม่ซ้ำเดิมครับ ซึ่งอาจได้มาจากการสุ่มก็ได้ครับ หรืออาจได้มาจากเวลาในรูปของ time stamp ก็ได้ครับ
ผู้เขียน goragod โพสต์เมื่อ 09 พ.ค. 2552 เปิดดู 15,059 ป้ายกำกับ AjaxPHP
^