ส่วนตัวเทียบกับสาธารณะในการควบคุมแคช


127

คุณช่วยอธิบายตัวอย่างที่ระบุความแตกต่างระหว่าง Public และ Private Cache-Control ในแอปพลิเคชัน asp.net ที่โฮสต์ใน IIS ได้ไหม

ฉันอ่านในMSDNว่าความแตกต่างมีดังต่อไปนี้:

สาธารณะ: ตั้งค่าการควบคุมแคช: สาธารณะเพื่อระบุว่าการตอบสนองสามารถแคชได้โดยไคลเอ็นต์และแคช (พร็อกซี) ที่ใช้ร่วมกัน

ส่วนตัว:ค่าเริ่มต้น ตั้งค่า Cache-Control: private เพื่อระบุว่าการตอบกลับสามารถแคชได้เฉพาะบนไคลเอนต์และไม่ใช้แคช (พร็อกซีเซิร์ฟเวอร์) ที่ใช้ร่วมกัน

ฉันไม่แน่ใจว่าฉันเข้าใจข้อดีข้อเสียของแต่ละทางเลือกอย่างสมบูรณ์แล้ว ตัวอย่างสำหรับเวลาที่จะใช้หรือไม่ใช้มันจะดีมาก

ตัวอย่างเช่นฉันควรทำอย่างไรหากมีเว็บเซิร์ฟเวอร์สองเครื่องที่โฮสต์แอปพลิเคชันเดียวกัน มีอะไรที่ต้องระวังถ้าฉันเลือกส่วนตัวหรือสาธารณะ

คำตอบ:


237

ข้อแตกต่างเพียงอย่างเดียวคือในส่วนตัวคุณไม่อนุญาตให้พร็อกซีแคชข้อมูลที่เดินทางผ่านพวกเขา ท้ายที่สุดแล้วข้อมูลทั้งหมดที่มีอยู่ในเพจ / ไฟล์ที่คุณกำลังส่ง

ตัวอย่างเช่น ISP ของคุณอาจมีพร็อกซีที่มองไม่เห็นระหว่างคุณกับอินเทอร์เน็ตซึ่งกำลังแคชหน้าเว็บเพื่อลดจำนวนแบนด์วิดท์ที่จำเป็นและลดต้นทุน เมื่อใช้การควบคุมแคช: ส่วนตัวคุณกำลังระบุว่าไม่ควรแคชเพจ (แต่อนุญาตให้ผู้ใช้ขั้นสุดท้ายทำเช่นนั้น) หากคุณใช้การควบคุมแคช: สาธารณะคุณกำลังบอกว่าทุกคนสามารถแคชเพจได้ดังนั้นพร็อกซีจะเก็บสำเนาไว้

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

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


39
ข้อแตกต่างเพียงอย่างเดียวคือในส่วนตัวคุณไม่อนุญาตให้พร็อกซีแคช ... ฉันเดาว่านี่เป็นการพิมพ์ผิด +1 ในคำตอบนอกเหนือจากนั้น เป็นเรื่องที่ควรค่าแก่การเพิ่มที่ส่วนตัวไม่มีความปลอดภัยในระดับใด ๆ แต่ตัวแทนที่อยู่ตรงกลางยังสามารถเห็นได้ หมายความว่าจะไม่มีตัวแทนที่ "ซื่อสัตย์" ให้กับคนอื่นแทนที่จะเป็นคำตอบที่สร้างขึ้นใหม่
Jon Hanna

แก้ไขแล้ว! มันตลกดีเพราะฉันอ่านซ้ำสองสามครั้งก่อนที่จะโพสต์ แต่ฉันคิดว่าฉันรู้ว่า "ไม่" ต้องอยู่ที่นั่นดังนั้นฉันจึงเพิ่มมันเข้าไป: D และใช่ +1 สำหรับความคิดเห็นของคุณเนื่องจากควรสังเกตว่าในขณะที่แนะนำสำหรับข้อมูลที่เกี่ยวข้องกับผู้ใช้ส่วนตัวจะไม่แทนที่ความปลอดภัยที่แท้จริง (SSL)
salgiza

เป็นเรื่องง่ายมากที่จะเขียนว่า "ไม่" เมื่อคุณไม่ควรหรือละเว้นเมื่อคุณควร ฉันรู้ว่าการแก้ไขด้วยตนเองจำนวนมาก (ในช่องต่างๆ) กำลังแก้ไขการพิมพ์ผิดเดียวกันนั้น
Jon Hanna

15
ถ้าเราไม่ระบุอะไรเลยพฤติกรรมเริ่มต้นจะเป็น "สาธารณะ" หรือ "ส่วนตัว"?
Pacerier

1
@Honey แต่อาจมีลูกค้าหลายคนที่ใช้พร็อกซีเดียวกัน หากเป็นไปได้ที่จะส่งการตอบสนองเดียวกันให้กับลูกค้าทั้งหมดคุณสามารถแคชที่ระดับพร็อกซีได้ไม่เช่นนั้นการแคชที่ไคลเอนต์อาจเป็นเรื่องปกติ (ยังมีบางกรณีที่แม้ว่าจะเป็นความคิดที่ไม่ดีก็ตาม) แต่ไม่ใช่ในพร็อกซี
Jon Hanna
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.