Tags:
Node Thumbnail

นักพัฒนาค้นพบว่า Safari ใน iOS 6 ฝ่าฝืนข้อกำหนดของโปรโตคอล HTTP ด้วยการ cache หน้าเว็บที่ถูกเรียกด้วยเมท็อด POST ไว้ทั้งที่ไม่ควรจะทำ ซึ่งทำให้การแสดงผลหน้าเว็บผิดพลาดไปจากที่ควรจะเป็น

วิธีหรือเมท็อดที่ใช้ในการสื่อสารระหว่างเบราว์เซอร์กับเว็บเซิร์ฟเวอร์นั้นมีด้วยกันหลายชนิด แต่เมท็อดที่นิยมก็คือ GET และ POST ทั้งนี้การร้องขอหน้าเว็บโดยใช้เมท็อด GET ด้วยพารามิเตอร์เดิมนั้น มักจะได้หน้าเว็บที่เหมือนกันเสมอ ดังนั้นเมื่อเซิร์ฟเวอร์ส่งข้อมูลมาให้เบราว์เซอร์แล้ว เบราว์เซอร์มักจะเก็บ (cache) หน้าเว็บที่ได้มานั้นไว้ในเครื่อง เมื่อผู้ใช้เรียกหน้าเว็บเดิมด้วยพารามิเตอร์เดิมอีกครั้ง เบราว์เซอร์ก็จะแสดงหน้าเว็บที่เก็บไว้ในเครื่องเลยโดยไม่จำเป็นต้องร้องขอไปยังเซิร์ฟเวอร์อีกครั้งให้เสียเวลา

ในทางตรงกันข้าม ข้อกำหนดของโปรโตคอล HTTP ระบุไว้ว่าเบราว์เซอร์ไม่ควร cache หน้าเว็บที่ได้จากเมท็อด POST เพราะการเรียกเว็บด้วยเมท็อด POST นั้นอาจจะไม่ได้หน้าเว็บที่มีหน้าตาเหมือนเดิมทุกครั้งแม้ว่าจะใช้พารามิเตอร์เดิมก็ตาม เบราว์เซอร์ควรร้องขอหน้าเว็บจากเซิร์ฟเวอร์เองโดยตรงเพื่อให้ได้ข้อมูลที่ถูกต้องที่สุด

ปรากฎว่ามีนักพัฒนากลุ่มหนึ่งโพสต์ใน Stack Overflow ว่าหน้าเว็บของพวกเค้าที่เป็น Ajax นั้นแสดงผลไม่ถูกต้องบน Safari ของ iOS 6 จากการตรวจสอบก็พบว่า Safari เวอร์ชันนี้ตั้งหน้าตั้งตา cache หน้าเว็บไว้ทั้ง ๆ ที่เป็นเมท็อด POST และแม้จะสั่งปิดไม่ให้ Safari เก็บค่าไว้แล้วก็ตาม

งานนี้ทำให้นักพัฒนาต้องปวดหัวและความพยายามในการแก้ไขหลายทางก็ไม่ได้ผล ทางออกที่ใช้ได้ตอนนี้ก็คือต้องใส่ค่า timestamp เป็นพารามิเตอร์หนึ่งของเมท็อด POST ด้วยทุกครั้ง เพื่อให้ Safari เห็นชัด ๆ ว่าเป็นการเรียกที่ไม่ซ้ำกันและไม่ดื้อดึงที่จะ cache หน้าเว็บไว้อีก

ที่มา - Ars Technica

Get latest news from Blognone

Comments

By: soginal
AndroidIn Love
on 24 September 2012 - 17:01 #479009
soginal's picture

จริงๆแล้วตามข้อกำหนดใน rfc สามารถกำหนด cache-control header เพื่อสั่งให้ browser cache ได้นะครับ เพียงแต่ default แล้วมันจะไม่ cache ให้

แต่ในกรณีนี้เขาบอกว่าใน safari ดูเหมือนจะ cache ให้เป็น default และหากต้องการไม่ให้ cache ก็ต้องส่ง header Cache-Control: no-cache เท่านั้น และอีกวิธีก็คือส่ง timestamp นั่นแหละ

By: tk719
iPhoneBlackberrySymbianIn Love
on 24 September 2012 - 17:15 #479019

คำว่า method (เมธ็อด) ไม่มีคำไทยหรือครับ?

By: hisoft
ContributorWindows PhoneWindows
on 24 September 2012 - 17:26 #479030 Reply to:479019
hisoft's picture

ตอนเด็ก ๆ อาจารย์สอนเรียกเม็ดตอดครับ :p

By: shelling
ContributoriPhoneAndroidUbuntu
on 24 September 2012 - 17:44 #479049 Reply to:479030
shelling's picture

+1

By: nextman13
AndroidBlackberryUbuntuWindows
on 24 September 2012 - 17:49 #479055 Reply to:479030

เม็ด..ตอด

By: Arcanis
Windows PhoneWindows
on 24 September 2012 - 18:22 #479091 Reply to:479055

รู้นะ คิดอะไร :P ... คิดเหมือนผมใช่ป่าว

By: EThaiZone
ContributorAndroidUbuntuWindows
on 24 September 2012 - 19:54 #479141 Reply to:479091
EThaiZone's picture

ปลาทองใช่ไหมล้า เคยโยนอาหารเม็ดมันตอดอาหารเกลี้ยงเลย


มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB

By: hisoft
ContributorWindows PhoneWindows
on 24 September 2012 - 21:54 #479180 Reply to:479141
hisoft's picture

นั่นมันตอดเม็ด!

By: lungkao
ContributoriPhoneAndroidUbuntu
on 24 September 2012 - 23:42 #479248 Reply to:479091

อย่าต่ออีกเลยเดี๋ยวต้องติด เรต อิอิ

By: lch
ContributoriPhoneUbuntu
on 24 September 2012 - 17:30 #479036 Reply to:479019

วิธี หรือ เมท็อด (จากศัพท์บัญญัติ) ครับ

By: heart
ContributoriPhone
on 24 September 2012 - 17:37 #479042 Reply to:479019
heart's picture

หากแปลไทย คงจะมีคนสับสนกว่าเดิม เพราะ method มันถูกใช้ทับศัพท์ เสมือนเป็นศัพท์ทางเทคนิคไปโดยปริยาย

By: quake_the_rock
iPhoneRed HatUbuntuWindows
on 24 September 2012 - 17:56 #479060 Reply to:479019
quake_the_rock's picture

ไม่ควรเรียกเป็นคำไทยอย่างยิ่ง

By: EThaiZone
ContributorAndroidUbuntuWindows
on 25 September 2012 - 01:01 #479304 Reply to:479019
EThaiZone's picture

เอาจริงๆ นะ เคยมีช่วงหนึ่งผมอ่านเป็น มีท็อด จากนั้นค้นพบว่าตัวเองใช้หลักการอ่านออกเสียงผิด พอๆ กับครูประถมที่สอนเด็กอ่านออกเสียงว่าเรสเตอแรน (restaurant)

ไม่ได้เหน็บครูนะ แต่ผมนักเรียนหลักสูตร 2521 เจอคำนี้ในช่วงประถมบ่อยมาก!

ปล. นอกเรื่องนิด คิดถึงหนังสือสปช. มากๆ


มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB

By: HMage
AndroidWindows
on 24 September 2012 - 17:40 #479046

ซ้ำรอย IE5 ?

By: zigheart
iPhoneAndroid
on 24 September 2012 - 17:47 #479051
zigheart's picture

เป็นมานานละครับ สมัยก่อนผมแก้เว็บอยู่หลายรอบ แต่มันกลับแสดงผลเหมือนเดิม

By: CPECHRIS
Windows PhoneWindows
on 24 September 2012 - 17:48 #479053
CPECHRIS's picture

It's a feature !!

By: toooooooon
iPhoneWindows PhoneAndroidBlackberry
on 24 September 2012 - 17:58 #479063 Reply to:479053

ฮา

By: pittaya
WriterAndroidUbuntuIn Love
on 24 September 2012 - 17:50 #479057
pittaya's picture

iOS6 มีบั๊กเรื่อง AJAX อยู่ 3 ตัว มีวิธีแก้ไขตามนี้ครับ http://www.devthought.com/2012/09/22/understanding-the-ios6-ajax-bugs/


pittaya.com

By: pizzicato
ContributoriPhoneUbuntu
on 24 September 2012 - 17:58 #479062
pizzicato's picture

รู้แต่ว่า Safari เวอร์ชั่นนี้มันเร็วมากๆ


positivity

By: gunner1886
iPhoneWindowsIn Love
on 24 September 2012 - 18:08 #479076 Reply to:479062

+1

By: psemanssc
Blackberry
on 24 September 2012 - 19:34 #479132 Reply to:479062

+1 ทดแทนแผนที่ได้สำหรับผม เพราะชอบอ่านเว็บบนรถไฟฟ้า

By: dangsystem
iPhoneAndroidBlackberryWindows
on 24 September 2012 - 21:36 #479176 Reply to:479062
dangsystem's picture

กับ chrome ละครับใครเร็วกว่า

By: inkirby
ContributoriPhoneAndroidIn Love
on 24 September 2012 - 22:12 #479182 Reply to:479176
inkirby's picture

Chrome กระตุกกว่าครับ #ผิดประเด็น


Dream high, work hard.

By: nant
ContributorWindows PhoneRed HatUbuntu
on 25 September 2012 - 01:21 #479315 Reply to:479176

ผลการทดสอบออกมาว่า safari เร็วกว่าครับ

By: gift2533
AndroidWindowsIn Love
on 25 September 2012 - 15:11 #479693 Reply to:479062

จากหัวข้อข่าวน่าจะพอรู้นะครับว่ามันเร็วเพราะอะไร

By: kajokman
ContributorAndroidIn Love
on 24 September 2012 - 18:06 #479073
kajokman's picture

อธิบายเรื่อง method ได้ดีครับ ^^

By: HyBRiD
ContributoriPhoneSymbianUbuntu
on 24 September 2012 - 18:17 #479082
HyBRiD's picture

ทำตัวเป็น IE ไปได้

ชิส์

By: lungkao
ContributoriPhoneAndroidUbuntu
on 24 September 2012 - 23:42 #479250

Apple ทำอะไรเนี้ย

By: olosol@hotmail.com
iPhoneWindows PhoneAndroidBlackberry
on 25 September 2012 - 03:11 #479353

รู้สึกผิดหวังกับ apple ยุคที่ไม่มี ลุงจ๊อบส์ หน่อยนึง คิดว่าเรื่องพวกนี้ไม่น่าหลุดออกมาถ้าแกยังอยู่ รู้สึกเหมือน quality ลดลงเยอะ เรื่อง map เหมือนกัน ส่วนตัวเชื่อว่าถ้า จ๊อบส์ อยู่ ios6 น่าจะยังใช้ map ของ google อยู่ เพราะเห็นๆอยู่ว่าของใหม่สู้ของเดิมไม่ได้ ยังดันทุรังใส่มาอีก

By: kitarotao
iPhoneWindows PhoneAndroidBlackberry
on 25 September 2012 - 03:22 #479358
kitarotao's picture

HTTP is universal transfer protocols.

By: SuperBancha
Android
on 25 September 2012 - 23:19 #480031
SuperBancha's picture

อยากบอกว่า android ก็เป็นครับ Ajax bug อันนี้