URL Shortener ทำงานอย่างไร [ปิด]


91

ฉันสงสัยว่า URL Shortener ทำงานอย่างไรเช่นพวกเขาแยกข้อความจากแถบที่อยู่และจับคู่กับ URL ที่ถูกต้องแล้วเปลี่ยนเส้นทางในภายหลัง พวกเขาใช้ภาษาโปรแกรมอะไร? พวกเขารักษาประวัติศาสตร์ของการทำแผนที่อย่างไร? พวกเขาตรวจสอบความเป็นเอกลักษณ์ของ URL แบบย่อได้อย่างไร คนธรรมดาจะปลดแมปโดยไม่เข้าไปที่ URL ได้อย่างไร?


68
ปิดโหวตเพียง 3 ครั้ง? c'mon เขาอยากเรียนอะไรก็ปิดเร็ว !!!
— IAdapter

24
นี่เป็นคำถามที่แน่นอนที่ฉันมีและฉันผิดหวังมากที่เห็นว่าปิดแล้ว ไม่คลุมเครือหรือไม่สมบูรณ์ - เขาเจาะจงในสิ่งที่เขาถาม
— thumbtackthief

4
@bmargulies ฉันคิดว่าไม่ควรปิดคำถามนี้มีประโยชน์มากและแม้แต่คำตอบก็คิดว่า 43 upvotes และคุณตัดสินใจปิดทำไม ..
— Amruth A

คำตอบ:


40

วิกิเป็นเพื่อนของคุณ

โดยทั่วไปเว็บไซต์ที่มีชื่อสั้นกว่าจะใช้เป็นตัวยึดตำแหน่งเช่น bit.ly

จากนั้น bit.ly จะสร้างคีย์เพื่อให้ผู้ใช้ระบุซึ่งสร้างขึ้นแบบสุ่มเพื่อไม่ให้เกิดซ้ำ ด้วยตัวเลือกอักขระ 35 ตัวและ 8 ค่าหรือมากกว่านั้นให้ทำการคำนวณ นั่นเป็นกุญแจที่เป็นไปได้มากมาย หาก url เท่ากับคีย์ที่มีอยู่ก่อนหน้านี้ฉันจำได้ว่าอ่านที่ไหนสักแห่งที่ใช้คีย์ซ้ำได้

พวกเขาไม่ได้ใช้ภาษาการเขียนโปรแกรมที่เฉพาะเจาะจงมากนักเพียงแค่ใช้การเปลี่ยนเส้นทาง URL แบบธรรมดาซึ่งสามารถทำได้ด้วย HTML ฉันเชื่อ


โอ้เจ๋งมาก ขอบคุณมาก
— prap19

25
การเปลี่ยนเส้นทางไม่ได้ทำด้วย HTML แต่ทำด้วย HTTP Headers (รหัสสถานะ 301 หรือ 302 ขึ้นอยู่กับ)
— Yahel

โอเคนั่นจะเข้าท่ากว่า ขอขอบคุณสำหรับการชี้แจง.
— Daniel G.Wilson

ต้องใช้ส่วนหัวตำแหน่งเพื่อเปลี่ยนเส้นทาง
— Jeevan Patil

26

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

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


19

กระบวนการนี้ค่อนข้างง่ายจริงๆ: มีสคริปต์ที่ขอ URL สร้างสตริงแบบสุ่ม (และตรวจสอบว่าสตริงนี้ไม่ได้ใช้แล้ว) และทำให้ทั้งสองอยู่ในฐานข้อมูลบางประเภท เมื่อคุณขอ url สคริปต์อื่นจะค้นหาสตริงแบบสุ่มในฐานข้อมูลและหากพบจะเปลี่ยนเส้นทางคุณไปยังไซต์

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


ภาษาไม่เกี่ยวข้องส่วนใหญ่ใครจะทำ


9
"และยืนยันว่าไม่ได้ใช้สตริงนี้" .. HOW? นี่คือคำถามที่ยิ่งใหญ่ที่สุด
— Stewie

4
@Stewie: SELECT * FROM mappings WHERE key = stringToCheck และตรวจสอบว่ามีการส่งคืนแถวหรือไม่ หรือสิ่งที่คล้ายกันในภาษาฐานข้อมูลที่คุณเลือก ดูเหมือนเป็นส่วนที่ง่ายที่สุดของปัญหาทั้งหมดที่จะพูดตามตรง
— David Liu

@Stewie หรือสามารถใช้HashMapเพื่อทำแผนที่ได้<key, url>
— roottraveller

@DavidLiu ไม่จำเป็นต้องสร้างใหม่และออกแบบสอบถามจนกว่าจะไม่มีผลลัพธ์หรือไม่? เมื่อขนาดข้อมูลของคุณเพิ่มขึ้นเวลาในการตรวจสอบก็จะเพิ่มขึ้น ในกรณีที่เลวร้ายที่สุดจำนวนการสืบค้นไปยังฐานข้อมูลของคุณจะเป็น n-1 โดยที่ n คือจำนวน "สตริง" จะเกิดอะไรขึ้นเมื่อคุณมีสตริง 100M
— Stewie

@Stewie นั่นเป็นคำถามที่แตกต่างกันโดยสิ้นเชิงปัญหาเกี่ยวกับหลักการของการแก้ปัญหาเอง คุณคิดถูกที่ปัญหาการสร้างใหม่จะกลายเป็นปัญหาในที่สุด แต่อีกครั้งนั่นคือเหตุผลที่ฉันบอกว่า "การตรวจสอบสตริงไม่ได้ใช้แล้ว" เป็นส่วนที่ง่ายของการแก้ปัญหา มีวิธีแก้ปัญหาทางเลือกมากมายให้ทำการสุ่มโดยไม่ต้องเปลี่ยนใหม่
— David Liu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.