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.