Tag Archive static

PHP: no-cache css javascript

ตามคำแนะนำในการทำเว็บให้เร็วคือให้แยกไฟล์ภาพ, css และ javascript ออกมาเพราะว่าไฟล์พวกนี้แทบจะเหมือนๆ กันทุกๆหน้า และเปลี่ยนไม่บ่อยนัก การ set server จึงกำหนดให้ทางฝั่ง browser จดจำ static content (css, images,js files) พวกนี้เอาไว้ จะได้ไม่ต้องโหลดไฟล์พวกนี้ใหม่ ทำให้สิ้นเปลือง (สิ้นเปลือง bandwide แบนด์วิธอันล้ำค่าและมีราคาที่เช่ามาจาก isp และ cpu, ram ที่ใช่จัดการจ่ายไฟล์จาก server ไปให้บราวน์เซอร์ของยูเซอร์)

ปัญหาก็คือ เมื่อเราแก้ไฟล์ image, css หรือ javascript อัพโหลดขึ้นไปบน server แล้วแต่ user ยังได้รับไฟล์ version เดิมๆ อยู่ ที่นิยมกันก็คือ ใส่ตัวแปรแบบสุ่มหรือเวลาตามหลังชื่อไฟล์ เช่น

<link href="styles.css?ts=150151" rel="stylesheet" type="text/css">
...
<script src="scripts.js?ts=150151">
...
<img src="logo.png?ts=150151">

เมื่อต้องการให้ใช้ไฟล์ version ใหม่ก็เปลี่ยนค่าของ ts เป็นค่าอื่น ตัว browser จะถือว่าเป็นคนละไฟล์กับไฟล์เดิมที่เก็บไว้ใน cache ของมันเอง ปัญหาก็คือถ้ามีไฟล์พวกนี้ 100 จุด หรือ 1000 จุดก็ต้องไล่แก้ทั้งหมดให้เหมือนๆกันถึงจะเปลี่ยนไฟล์ทุกตัวให้เป็นตัวใหม่พร้อมๆกัน อาจจะทำเป็น global variable หรือใช้ function จัดการให้แต่มันซับซ้อนเกินไป

อีกวิธีที่ทำได้ง่ายแต่ได้ผลกับทุกๆ ไฟล์คือใช้

header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');

เมื่อต้องการให้ browser โหลดไฟล์ใหม่อีกครั้ง โดยใส่ใน header ของเว็บ

อ่านเพิ่มเติม HTTP Caching

อยากรู้มัยเว็บคุณใครรู้จักบ้าง

ในบรรดาเว็บที่มีมากกว่าเม็ดทรายในมหาสมุทร อยากรู้มัยครับจะมีใครเห็นเว็บเราบ้าง อาจจะดูได้จากเคาร์เตอร์ในเว็บเรา แต่การที่คนจะเข้ามาเว็บเราได้ ส่วนใหญ่จะมาจากเว็บเซิร์จเอ็นจินต่างๆ เราจะดูได้อย่างไรว่าบรรดาเว็บเหล่านี้ตัวไหนรู้จักอะไรในเว็บเราบ้าง

  • เริ่มจากอันดับพี่ใหญ่ในตำนาน google http://www.google.com ที่ใครหลายคนขาดไม่ได้ในการหาข้อมูล เข้าไปเซิร์จโดยใช้ site:ยูอาร์เอลเว็บของคุณ เช่น site:plusmagic.wordpress.com พบ 78 รายการ
  • อันดับต่อมาแขมป์เก่า yahoo ไปที่ http://siteexplorer.search.yahoo.com พิมย์ยูอาร์เอลเว็บของคุณลงไป เว็บของผมพบ 4 หน้า 35 ลิงค์ (ขนาดรวมลิงค์ที่ไปเว็บอื่นแล้วนะ ทำไม่ต่างกันอย่างนี้)
  • ผู้ท้าชิงตลอดกาล bing (windows live search ) ของพี่ใหญ่บิลเกต์ครับ ไปที่ http://www.bing.com/ เข้าไปเซิร์จโดยใช้ site:ยูอาร์เอลเว็บของคุณ เช่น site:plusmagic.wordpress.com (copy google มารึเปล่าเนี่ย) 2 รายการครับ เอ๋อไปเลย เป็นหน้าแรก และหน้าที่เคยเขียนไว้นานมากแล้ว

ผมไม่ได้ทำ seo ให้ google เป็นกรณีพิเศษใส่คำค้นตามปกติเท่านั้นแต่ผลลัพท์ต่างกันขนาดนี้ เป็นมวยก็เรียกชกไม่สมศักดิ์ศรีครับ ไม่ต้องสงสัยเลยว่าหาข้อมูลครั้งต่อไปผมจะเลือกใคร