2011-09-06 10 views
13

फेसबुक: http://static.ak.fbcdn.net/rsrc.php/v1/yh/r/u2OL99TwlfU.css
गूगल: http://ssl.gstatic.com/gb/js/sem_cf9545d69b4bd3d22ed10206010c8b23.jsफेसबुक, Google और अन्य बड़े एप्लिकेशन कैसे अपना सीएसएस और जावास्क्रिप्ट फाइल करते हैं?

अन्य साइटों, Tagged जो भी विधि के इस प्रकार का उपयोग करता है की तरह कर रहे हैं।

ये साइटें और अन्य बड़े एप्लिकेशन इन फ़ाइलों को कैसे करते हैं? मुझे लगता है कि जब वे अपनी फ़ाइल अपडेट करते हैं, तो यूआरएल वास्तव में बदलता है ताकि कैश यूआरएल को पहचान न सके और नई फाइल को पुनः लोड कर सके।

मैं वास्तव में फेसबुक के rsrc.php के बारे में अधिक उलझन में हूं, लेकिन मैं अभी भी बाकी को समझ नहीं पा रहा हूं। ऐसा लगता है कि Google की यादृच्छिक स्ट्रिंग कुछ का MD5 है।

मुझे अपनी वेबसाइटों पर ऐसा कुछ चाहिए, बड़े अनुप्रयोग इसका उपयोग करते हैं, इसलिए इसका उपयोग करने के लिए उपयोगी होना चाहिए - भले ही मैंने उपयोग करने का निर्णय नहीं लिया हो, फिर भी इसका ज्ञान निकट भविष्य में फायदेमंद हो सकता है।

उत्तर

27

(मैं rsrc.php और फेसबुक के जल्दबाजी स्थिर संसाधन प्रबंधन प्रणाली के मूल लेखक हूँ।)

आप चुनौतियों फेसबुक स्थिर संसाधन प्रबंधन के साथ सामना करना पड़ा में से कुछ का वर्णन पाते हैं और यह कैसे उन्हें यहाँ हल कर सकते हैं, Phabricator दस्तावेज में:

https://secure.phabricator.com/book/phabflavor/article/soon_static_resources/

विशिष्ट प्रश्न के लिए, rsrc.php यूआरआई विशेष रूप से, क्योंकि हम में एक वैश्विक अपाचे पुनर्लेखन नियम नहीं था ("rsrc.php" उन में से) कि तरह हैं 2007 जब मैंने rsrc.php लिखा और कुछ के लिए एक को तैनात, तैनाती और परीक्षण किया अधिक सुरुचिपूर्ण यूआरआई के साथ परेशान करने के लायक नहीं लग रहा था (PHP में, आप रनटाइम पर "x.php" फ़ाइल भाग के बाद यूआरआई के शेष को पढ़ सकते हैं)। तो वह हिस्सा सिर्फ एक PHP कार्यान्वयन आर्टिफैक्ट है।

अन्य पथ घटकों का उपयोग कई वर्षों से विभिन्न चीजों के लिए किया गया है, जैसे आपातकालीन संस्करण संख्या हम कैश पाइपलाइन के साथ कुछ गलत होने पर वैश्विक स्तर पर टक्कर मार सकते हैं, एक हैश चेकसम ताकि हम वैध और अंतर के बीच अंतर कर सकें। लॉगिंग के लिए कचरा अनुरोध, आंतरिक झंडे जो विकास के लिए लौटे संसाधन की कैश नीति को बदलते हैं, और संसाधन के स्वाद (उदाहरण के लिए, किसी विशिष्ट ब्राउज़र के अनुरूप या किसी विशिष्ट भाषा के लिए स्थानीयकृत)।

+0

ठीक है, मैंने उन यादृच्छिक फ़ाइल नामों को मान लिया - अच्छी तरह से फेसबुक मूल फ़ाइल नाम और अंतिम संशोधित दिनांक के साथ एक चेकसम था। हालांकि वास्तविक फ़ाइल प्राप्त करने के लिए चेकसम को उलट करने की आवश्यकता होगी। मैं इसके बारे में क्यों पूछ रहा हूं क्योंकि मैं एक समान चीज़ बनाना चाहता हूं। मुझे पता है कैश के साथ इसका क्या प्रभाव है। उदाहरण के लिए यदि आपके पास image.png था - जब वह छवि अपडेट हो जाती है, तो आप तब तक परिवर्तन नहीं देखें जब तक कि आप रीफ्रेश नहीं करते।इसके अलावा, आपको वास्तविक यूआरएल को संशोधित करने की आवश्यकता है ताकि यह उस फ़ाइल और अंतिम संशोधित तिथि के लिए अद्वितीय हो - ताकि आप बिना किसी ताज़ा किए अपडेट अपडेट देख सकें। –

+0

यह एक दिलचस्प लेख था – dave

+0

गुगल के लिए, यह किसी प्रकार का MD5 जैसा दिखता है। फिर, शायद उलट दिया जाना चाहिए। मैं उलझन में हूं कि मेरा कैसे करें। –

0

फेसबुक और Google दोनों अपने स्थिर संसाधन फ़ाइल नाम में एक एमडी 5 प्रत्यय का उपयोग करते हैं।

सबसे पहले, यह प्रदर्शन के लिए एक सामान्य अनुकूलन है, हम एक स्थिर संसाधन का संस्करण अपनी फ़ाइल सामग्री के एमडी 5 (minification के बाद) का उपयोग कर सकते हैं और कैश-कंट्रोल = 10 साल (nginx या apache) सेट कर सकते हैं। यदि आप अपने ब्राउज़र पर आगे/पीछे बटन दबाते हैं या पृष्ठ को दूसरी बार देखते हैं, तो फ़ाइल को आपकी स्थानीय डिस्क से पुनर्प्राप्त किया जाएगा, नेटवर्क के माध्यम से नहीं (सिवाय इसके कि आप रीलोड बटन दबाएं, 304 होगा)।

दूसरा, जब आप ऑनलाइन कोड प्रकाशित करते हैं, तो आप पहले सभी स्थिर संसाधनों को धक्का दे सकते हैं, वे पुराने लोगों के साथ संघर्ष नहीं करेंगे। और फिर आप सभी सर्वर-साइड कोड दबाते हैं, सभी उपयोगकर्ता को आपके पृष्ठ पर त्रुटि पहुंच नहीं होगी।

संबंधित मुद्दे