ฉันคิดว่าฉันพบปัญหา GoogleImageProxy แล้ว
นี่คือสิ่งที่เกี่ยวข้องกับแนวคิดการแคช สมมติว่าคุณเพิ่งปรับใช้โค้ด php บนเซิร์ฟเวอร์ของคุณ แต่คุณลืมอัปโหลดภาพ คุณทดสอบหนึ่งครั้งด้วยตรรกะอีเมลของคุณ ระบบของคุณสร้างอีเมล HTML เมื่ออีเมลนี้เข้าสู่เซิร์ฟเวอร์ gmail GoogleImageProxy จะพยายามดึงและจัดเก็บรูปภาพจากไซต์ของคุณไปยังพร็อกซีเซิร์ฟเวอร์ของตนเอง ในขณะที่ดึงภาพ GoogleImageProxy พบสถานะ 404 บางอย่างกับภาพที่หายไปของคุณและ 403 กับภาพที่มีการป้องกันบางภาพ GoogleImagesProxy ได้จัดเก็บสถานะเหล่านี้ไว้ในพร็อกซีเซิร์ฟเวอร์ของตนเอง
ตอนนี้พยายามเปิดอีเมลของคุณคุณสังเกตเห็นสถานะ 404 บางอย่างกับรูปภาพของคุณ นี่เป็นสิ่งที่เข้าใจได้ คุณรู้ทันทีว่าคุณลืมอัปโหลดภาพบางภาพดังนั้นคุณจึงอัปโหลดไปยังเซิร์ฟเวอร์ของคุณ และคุณได้แก้ไขการอนุญาตบางอย่างกับรูปภาพที่มีการป้องกัน
คุณทำเสร็จแล้ว ตอนนี้คุณพยายามเรียกใช้สคริปต์ php-email ของคุณอีกครั้ง ด้วยเหตุนี้คุณจึงได้รับอีเมลอื่นในกล่องจดหมาย Gmail หรือ Hotmail คุณได้แก้ไขปัญหาทั้งหมดเกี่ยวกับภาพของคุณแล้ว ตอนนี้ภาพจะต้องแสดงในเนื้อหาอีเมลของคุณ แต่คุณยังไม่เห็นภาพ
อาเป็นไปได้ว่าคุณลืมล้างแคชของเบราว์เซอร์ ล้างแคชของเบราว์เซอร์และโหลดหน้า gmail หรือ hotmail อีกครั้ง แต่ผลลัพธ์จะยังคงเหมือนเดิม ลองใช้การแก้ไข / แพตช์หลายสิบรายการและพยายามเรียกใช้สคริปต์อีเมล php เป็นพัน ๆ ครั้ง แต่ผลลัพธ์จะยังคงเหมือนเดิม ไม่มีการปรับปรุง.
ปัญหาที่แท้จริง
เกิดอะไรขึ้น? ให้ฉันอธิบายให้คุณฟัง ไปที่บันทึกการเข้าถึงของคุณแล้วลองค้นหาคำขอจาก GoogleImageProxy คุณจะประหลาดใจที่เห็นว่าจะมีคำขอจาก GoogleImageProxy เพียง 2 หรือ 3 รายการขึ้นอยู่กับจำนวนภาพต่างๆที่ใช้ในอีเมลของคุณ GoogleImageProxy ไม่เคยพยายามดึงภาพแม้ว่าคุณจะแก้ไขปัญหาเกี่ยวกับภาพของคุณแล้วโดยการอัปโหลดภาพที่ขาดหายไปและตั้งค่าการอนุญาตสำหรับภาพที่มีการป้องกัน ทำไม? การล้างแคชของเบราว์เซอร์ไม่มีผลกระทบ GoogleImageProxy จะไม่ดึงภาพที่สดใหม่แม้กระทั่งสำหรับอีเมลรุ่นใหม่ของคุณเนื่องจากขณะนี้รูปภาพจะถูกแคชไว้ใน GoogleImageProxy พร้อมกับรหัสสถานะล่าสุดและจะไม่ถูกแคชในเบราว์เซอร์ของคุณเอง
GoogleImageProxy ได้กำหนดวันหมดอายุสำหรับรูปภาพของตัวเอง ฉันคิดว่าหนึ่งเดือน ดังนั้นตอนนี้สำเนาใหม่ของภาพจะถูกดึงออกมาหลังจากวันหมดอายุ ฉันหมายถึงหลังจากหนึ่งเดือน คุณไม่สามารถบังคับให้ GoogleImageProxy ดึงภาพได้ แต่สิ่งสำคัญสำหรับคุณในการแสดงภาพในอีเมลของคุณ อะไรคือทางออก?
การแก้ไขปัญหา
ต่อไปนี้เป็นวิธีเดียวที่จะบังคับให้ GoogleImageProxy ดึงภาพของคุณ
- เปลี่ยนชื่อรูปภาพของคุณเป็นอย่างอื่นด้วยนามสกุล png, jpg หรือ gif เท่านั้น
- อย่าใช้สตริงการสืบค้นใด ๆ ใน URL รูปภาพของคุณเช่น
?t=34343
- รูปภาพของคุณต้องมี png, jpg หรือ gif เป็นส่วนขยาย
- URL รูปภาพของคุณจะต้องถูกจับคู่กับรูปภาพของคุณโดยตรง
- หากคุณจำเป็นต้องใช้พร็อกซี URL สำหรับรูปภาพที่มีการป้องกันการตอบสนองของคุณจะต้องมีส่วนหัวที่เหมาะสม
Content-Type: image/jpeg
- นามสกุลไฟล์และส่วนหัวประเภทเนื้อหาต้องตรงกัน
- รหัสสถานะต้องเป็น 200 แทนที่จะเป็น 403, 500 เป็นต้น
โน๊ตสำคัญ
พยายามทำซ้ำขั้นตอนทั้งหมดสำหรับทุกสคริปต์ php-email เพราะทุกครั้งที่ GoogleImageProxy จะแคชรูปภาพของคุณและคุณจะต้องทำขั้นตอนเดิมซ้ำทุกครั้ง
หวังว่านี่จะช่วยแก้ปัญหาให้กับคนส่วนใหญ่ได้