การบันทึกหน้าเว็บด้วย Ctrl + S ใน Firefox ทำให้เบราว์เซอร์โหลดไซต์เป็นครั้งที่สองหรือไม่


58

เมื่อบันทึกเว็บไซต์สำหรับการอ่านแบบออฟไลน์ด้วยCtrl+ Sใน Firefox ฉันสังเกตเห็นว่ากระบวนการดาวน์โหลดใช้เวลาสักครู่เพื่อให้เสร็จแม้ว่าหน้าเว็บจะโหลดเสร็จแล้ว

ฉันสงสัยว่าการบันทึกหน้าเว็บเช่นนั้นจะทำให้ Firefox ดึงเนื้อหาทั้งหมด (HTML, รูปภาพ, JavaScript, CSS, ฯลฯ ) เป็นครั้งที่สองหรือไม่หรือมันจะได้รับจากไฟล์ที่โหลดไปแล้วในแคช


อย่างที่ฉันจำได้ว่า firefoxes เก่าโหลดหน้านี้อีกครั้ง คำตอบสำหรับ Firefox ปัจจุบัน เป็นเวลาหลายปีแล้ว
user259412

คุณช่วยอธิบายสิ่งที่คุณเรียกว่า "กระบวนการดาวน์โหลด" ได้หรือไม่? แม้ว่าทรัพยากรที่อยู่ในหน่วยความจำไม่ควรถูกดาวน์โหลดซ้ำอีกครั้งจากเครือข่ายเบราว์เซอร์ยังคงมีสิ่งที่ต้องทำเพื่อส่งออกข้อมูลทั้งหมดในโฟลเดอร์ + ลิงก์ที่เปลี่ยนแปลงเป็นต้นนอกจากนี้หากดิสก์หน่วยเก็บข้อมูลถูกหยุดชั่วคราว บางครั้งเพียงเพื่อปลุกให้เราสามารถเขียนได้ แต่ถ้าคุณกำลังพูดถึง Library> ดาวน์โหลดแผงเวลาและแสดงบางอย่างเช่น 1.2Mbps มันอาจเกี่ยวข้องกับการถดถอยนี้พวกเขาไม่คิดว่าจะเป็นข้อผิดพลาด ...
Kaiido

4
ในขณะที่ผู้ใช้รายอื่นตอบคำถามนี้เรียบร้อยแล้วโปรดทราบว่าการทำแคตตาล็อกพฤติกรรมดังกล่าวในซอฟต์แวร์ใด ๆ อาจเป็นความพยายามที่ไร้ประโยชน์เว้นแต่หากรับประกันพฤติกรรมถูกจัดทำโดยนักพัฒนาซอฟต์แวร์ ดังนั้นคำตอบใด ๆ ที่ถูกทำเครื่องหมายว่าถูกต้องควรชี้ไปที่เวอร์ชันที่ถูกทดสอบเทียบกับการตั้งสมมติฐานแบบกว้างเกี่ยวกับรุ่นในอนาคตและในอดีตทั้งหมด สิ่งที่ดีที่คำตอบยอดนิยมได้ตอบปัญหานี้ไปแล้ว ฉันรู้ว่า; nitpicking
Adnan Y

แม้ว่านี่จะดูเหมือนและโดยทั้งหมดคือ "WTF" ความเป็นจริงมีอยู่ว่านี่เป็นเรื่องปกติที่สมบูรณ์แบบเมื่อทศวรรษที่แล้วไม่ใช่แค่กับ Firefox อย่าถามฉันว่าทำไมมันไม่สมเหตุสมผลเลย
เดมอน

คำตอบ:


68

ไม่มันไม่ทริกเกอร์คำขอที่สอง

ฉันเพิ่งทดสอบโดยใช้เซิร์ฟเวอร์ HTTP ง่ายๆเพื่อบันทึกคำขอ เซิร์ฟเวอร์ไม่ได้รับคำขอที่สองเมื่อบันทึกเว็บไซต์

  • ทดสอบกับ: Firefox 61.0.1 (64 บิต) บน Ubuntu 18.04
  • เซิร์ฟเวอร์: โมดูล SimpleHTTPServer ของ python 2.7.15 ( python -m SimpleHTTPServer 7070)

แก้ไข:

ผู้แสดงความคิดเห็นถามเกี่ยวกับพฤติกรรมที่แตกต่างกันหากเซิร์ฟเวอร์กำลังส่งส่วนหัว "ไม่แคช" ฉันทดสอบด้วยPragma: No-CacheและCache-Control: No-Cacheและผลลัพธ์ยังคงเหมือนเดิม

รหัสที่ฉันใช้ทำการทดสอบ (ผ่านคำตอบนี้ ):

#!/usr/bin/env python
import SimpleHTTPServer

class MyHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def end_headers(self):
        self.send_my_headers()

        SimpleHTTPServer.SimpleHTTPRequestHandler.end_headers(self)

    def send_my_headers(self):
        self.send_header("Pragma", "No-Cache")
        self.send_header("Cache-Control", "No-Cache")


if __name__ == '__main__':
    SimpleHTTPServer.test(HandlerClass=MyHTTPRequestHandler)

11

ไม่เลย

ฉันเพิ่งทดสอบสิ่งนี้โดยไม่ต้องใช้รหัสใด ๆ โดยตัดการเชื่อมต่อคอมพิวเตอร์ของฉันจากอินเทอร์เน็ตจากนั้นบันทึกเว็บเพจที่โหลดไว้แล้ว

มันได้ผล คุณสามารถทำแบบทดสอบเดียวกันด้วยตัวเอง


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


11
มีชุดค่าผสมมากมายหมดอายุการควบคุมแคช Pragma และส่วนหัวอื่น ๆ ที่อาจ "ไม่ได้อยู่ในกรณีเดียวนี้" แน่นอนไม่ได้หมายความว่า "ไม่เคย" หากไม่ได้ดูซอร์สโค้ดฉันจะไม่เดิมพันอะไรเลย
Guntram Blohm

5
@GuntramBlohm ถูกต้องอย่างแน่นอน ในทางตรงกันข้ามถ้าการทดสอบอย่างง่ายล้มเหลวแล้วคุณสามารถแตกหักสรุปได้ว่า Ctrl-S จะไม่เสมอทำงานโดยไม่ต้องส่งคำขอเพิ่มเติมไปยังเซิร์ฟเวอร์แม้ว่ามันอาจบางครั้งทำเช่นนั้น ดังนั้นการทดสอบอย่างง่ายยังคงมีคุณค่า ฉันประหลาดใจที่ไม่มีใครพูดถึงมันดังนั้นฉันจึงทำ
Wildcard

8

การบันทึกหน้าเว็บ ( ctrls) ทำให้ Firefox ดึงเนื้อหาทั้งหมดเป็นครั้งที่สองหรือไม่?

นี้มีการทดสอบอย่างง่ายดายโดยใช้ของ Firefox เครื่องมือสำหรับนักพัฒนา

  • เปิดเครื่องมือและคลิกแท็บ "เครือข่าย"

  • บันทึกหน้า

คุณจะเห็นว่าไม่มีการรับส่งข้อมูลเครือข่ายเพิ่มเติม


50
ฉันสงสัยว่าเราสามารถพึ่งพาเครื่องมือของนักพัฒนาในกรณีนี้ได้ มันแสดงเฉพาะปริมาณการใช้งานจากแท็บเดียวและฉันไม่คิดว่าการดาวน์โหลดทำงานในบริบทของแท็บนั้น ฉันคิดว่าการใช้เหตุผลของคุณโดยใช้ "บันทึกเป็น" จากเมนูบริบทในลิงก์ที่คุณไม่ได้เยี่ยมชมควรปรากฏในแท็บเครือข่าย - แต่ไม่ใช่
kapex

@kapex เข้าใจ แต่บันทึกในลิงก์ที่ไม่ได้เข้าชมไม่ใช่สิ่งที่เกิดขึ้นในกรณีนี้
DavidPostill

5
@kapex ฉันเพียงแค่ถอดปลั๊กเชื่อมต่ออินเทอร์เน็ตของฉันและก็ยังสามารถได้อย่างถูกต้องบันทึกหน้า ...
DavidPostill

11
ฉันไม่ได้สงสัยว่ามันใช้แคชฉันแค่สงสัยว่าเครื่องมือของนักพัฒนาซอฟต์แวร์สามารถใช้เพื่อพิสูจน์ได้ ฉันคาดหวังว่าทั้ง "บันทึกเป็น" และ "บันทึกหน้า" เพื่อทำงานในลักษณะเดียวกัน แต่แน่นอนว่าอาจมีความแตกต่าง ดังนั้นนี่เป็นแนวคิดอื่น: หากเราปิดใช้งานการแคชในเครื่องมือสำหรับนักพัฒนาการใช้ ctrl + s ควรแสดงในแท็บเครือข่าย แต่แน่นอนว่าจะไม่เกิดขึ้นอีก
kapex

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

2

ตรงกันข้ามกับคำตอบอื่น ๆ Firefox 59.0 จะทำการดาวน์โหลดรูปภาพ (ในการทดสอบของฉัน) เป็นครั้งที่สอง แต่ไม่ใช่ไฟล์ HTML

ฉันโหลดรูปภาพ arbritrary ( https://cdn.shopify.com/s/files/1/1613/3867/products/GS_cat_feeding_reminder_forget_someone.png?v=1520745318 ) และใช้ctrl+ sเพื่อบันทึก


1

อาจ

CSS มี@mediaตัวเลือก ช่วยให้ CSS สามารถใช้คำจำกัดความที่แตกต่างกันขึ้นอยู่กับชนิดของฮาร์ดแวร์ที่ใช้ในการแสดงหน้า - เครื่องพิมพ์หน้าจอที่มีขนาดแตกต่างกันเป็นต้น

CSS สามารถร้องขอไฟล์ภาพโดยตรง (ภาพกระสุน, ภาพพื้นหลัง)

ตอนนี้ถ้า Firefox ดาวน์โหลดเฉพาะสิ่งที่จำเป็นสำหรับฮาร์ดแวร์ปัจจุบันเมื่อแสดงหน้า แต่ดาวน์โหลดทุกอย่างเมื่อบันทึกลงดิสก์คุณสามารถมีคำขอพิเศษได้

ข้อแม้:

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


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