7 Blogger

สวัสดีเราเอง 7 ไง (จำไม่ได้เหรอ !?!?!)

March 23, 2009

[PHP] บังคับให้ Refresh Image CSS JS ทุกครั้งที่โหลด

Written by
7

มี tip เล็กๆน้อยๆมาเสนอ เวลาพัฒนา web แล้วเอามาเปิดที่ browser ตัว browser จะ cache หน้า web นั้นไว้ที่เครื่อง โดยเฉพาะ รูปภาพ ไฟล์ CSS อะไรพวกนี้ แล้วถ้าหน้า web นั้นถูกเปิดขึ้นมาใหม่ browser ก็จะเอาข้อมูลที่ cache มาแสดงผล แทนที่จะเอามาจาก server ซึ่งบางครั้งก็สะดวกดี(ทำให้เปิด web ได้เร็ว) แต่บางกรณีเราก็ต้องการให้ get ข้อมูลจาก server ทุกครั้ง อย่างเช่น รูปนั้นถูกสร้างขึ้นใหม่ทุกครั้งที่เรียก(พวกที่ใช้ GD ใน PHP สร้างรูปขึ้นมาเป็นต้นไง)

เทคนิคที่ผมใช้ก็คือ สร้าง URL ที่แตกต่างออกไปทุกครั้ง browser จะได้ไม่ cache ไว้

ตัวอย่าง. เรามี file รูปภาพจาก GD ชื่อ img.php เราก็แค่เติม parameter อะไรก็ได้มาต่อท้ายแค่นั้นเอง แบบนี้

echo ‘<img src=”img.php?refresh=’.rand(0,99999999).’”>’;

เราจะได้หน้าตา code ออกมาแบบนี้

<img src=”img.php?refresh=99999999″>
*เราจะ random ตัวเลขออกมาแทนที่เรื่อยๆหน่ะครับ จะได้ไม่ซ้ำกัน

ยังมีอีกเทคนิคนึง แต่ผมไม่ค่อยใช้ ชอบใช้แบบเฉพาะจุดมากกว่า

คำสั่ง META ให้ browser ไม่เก็บ cache

<META HTTP-EQUIV=”CACHE-CONTROL” CONTENT=”NO-CACHE”>
<meta http-equiv=”Expires” content=”0″>
<meta http-equiv=”Pragma” content=”no-cache”>

*เอาไปใส่ระหว่าง <head></head> นะครับ

ใครมีเทคนิคอื่นๆอีก ช่วยแชร์ด้วยครับ

เรื่องที่เกี่ยวข้อง

  • [PHP] วิธีหา Extension ที่ถูกติดตั้งอยู่บน Hosting
  • Dump DB ได้ง่ายๆ ด้วย BigDump
  • [JQuery] เล็กๆน้อยๆ กับ Inline JQuery
  • Theme ดิ้น
  • [PHP] วิธีติดตั้ง Sqlite บน PHP4.xx
  • 3 comments for this post.

    1. Comment from Tawan2325 on March 31st, 2009 :

      แบบนี้ก็มีด้วยหรอครับ

      ยังไงก็ขอบคุณครับ

      เอาของดีๆมาบอกกัน

    2. Comment from platoosom on April 17th, 2009 :

      ผมเคยเห็นโค้ดของฝรั่ง เล่นส่งตัวแปร get เข้าไปหาไฟล์ css ยังงงว่า มันส่งเข้าไปเพื่อประโยชน์อะไร ในเมื่อ css เองมันไม่ได้รู้เรื่องรู้ราว ตัวแปร get

      ขอบคุณสำหรับความกระจ่างในวันนี้

    3. Comment from narongrit on July 31st, 2009 :

      ดีมากเลยครับ

      เดี๋ยวจะได้เอาไปปรับใช้กับที่เว็บของผม

      เพราะบางทีเคยแก้ไปแล้ว แต่ก็งงว่าทำไมเปิดมาใหม่มันก็ยังไม่เปลี่ยน ต้อง refresh หลายที

    Leave a Comment