मैं एक एटैग बनाना चाहता हूं जो अपाचे का उत्पादन करता है। अपाचे कैसे इसके etags बनाते हैं?आप अपाचे से मेल खाने वाले एटैग कैसे बनाते हैं?
उत्तर
अपाचे इनोड-फाइलसाइज-एमटाइम के मानक प्रारूप का उपयोग करता है। इसका एकमात्र चेतावनी यह है कि mtime युग का समय होना चाहिए और शून्य के साथ गद्दी होना चाहिए ताकि यह 16 अंक हो। यहां PHP:
$fs = stat($file);
header("Etag: ".sprintf('"%x-%x-%s"', $fs['ino'], $fs['size'],base_convert(str_pad($fs['mtime'],16,"0"),10,16)));
यदि आप गतिशील रूप से अपना पृष्ठ बना रहे हैं, तो शायद यह समझ में नहीं आता है। यदि आप PHP में हैं, तो आप मुख्य स्क्रिप्ट का इनोड और फ़ाइल आकार चुन सकते हैं, लेकिन संशोधित समय आपको नहीं बताएगा कि आपका डेटा बदल गया है या नहीं। जब तक आपके पास अच्छी कैशिंग प्रक्रिया न हो या केवल स्थिर पृष्ठ उत्पन्न न करें, तो etags सहायक नहीं हैं। यदि आपके पास अच्छी कैशिंग प्रक्रिया है, तो इनोड और फ़ाइल का आकार शायद अप्रासंगिक है।
संपादित करें: उन लोगों के लिए जो etag एस नहीं जानते हैं - वे केवल एक मूल्य मानते हैं जो सामग्री बदलते समय बदलते हैं, कैशिंग उद्देश्यों के लिए। ब्राउज़र को वेब सर्वर से एटैग मिल जाता है, इसकी कैश की गई प्रतिलिपि के लिए इसे एटैग से तुलना करता है और फिर ईटैग बदल गया है तो पूरे पृष्ठ को प्राप्त करता है।
यह दृष्टिकोण डाउनलोड स्क्रिप्ट जैसे चीजों के लिए उपयोगी हो सकता है जो केवल PHP और अन्य स्थितियों के माध्यम से फ़ाइलों को स्ट्रीम करता है जहां प्रतिक्रिया वास्तव में प्रति-अनुरोध गतिशील नहीं होती है। –
अपाचे के इटैग्स के बारे में याद रखने की एक बात यह है कि वे क्लस्टर में अच्छी तरह से नहीं खेलते हैं क्योंकि उनमें इनोड जानकारी शामिल होती है जो संभवतः एक ही क्लस्टर में मशीनों के बीच भिन्न हो सकती है।
ऊपर (क्रिस) से अच्छी तरह से काम करता है, लेकिन sprintf में एक अंतर्निहित कलाकारों का उपयोग कर सरल किया जा सकता जवाब:
sprintf('"%x-%x-%x"', $s['ino'], $s['size'], str_pad($s['mtime'], 16, "0"));
सुझाव दिया क्योंकि गद्दी लागू किया जाता है %016x
काम नहीं करता है के बाद रूपांतरण हेक्स के लिए , पहले की बजाय।
यह ** ** काम नहीं करता है, मुझे यकीन नहीं है क्यों, क्योंकि% x को इनपुट के रूप में 'int' की आवश्यकता है? – Halcyon
@ फ़्रिट्स्वानकंपेन: यह उससे थोड़ा अधिक जटिल हो गया है। 'sprintf' स्ट्रिंग को' int 'पर डालने का प्रयास करेगा, लेकिन चूंकि ये संख्याएं इतनी बड़ी हैं कि वे बहती हैं और समस्याएं पैदा करती हैं। समाधान इसके बजाय 'फ्लोट' का उपयोग करना है: 'sprintf (' "% x-% x-% x '', $ s ['ino'], $ s ['size'], (float) str_pad ($ s [ 'माटा'], 16, '0')) '। –
- 1. रेगेक्स से मेल खाने के लिए आप स्ट्रिंग कैसे बनाते हैं?
- 2. दो सूचियों (या सरणी) से मेल खाने वाले आइटम
- 3. यदि एकाधिक मानों से मेल खाने वाले बयान
- 4. विशिष्ट वर्ष से मेल खाने वाले जेकील पोस्ट केवल
- 5. प्रिंट केवल भागों से मेल खाने वाले regex
- 6. नियमित अभिव्यक्ति से मेल खाने वाले सभी शब्दों की सूची
- 7. कुछ वाइल्डकार्ड से मेल खाने वाले MySQL डेटाबेस ड्रॉप करें?
- 8. क्वेरी पैरामीटर से मेल खाने वाले रेल मार्ग
- 9. आप कस्टम थीम वाले एनएसबटन कैसे बनाते हैं?
- 10. वीआईएम: मेल खाने वाले टैग के बीच कैसे स्थानांतरित करें?
- 11. आप कैसे मेलटू बनाते हैं: लिंक (से) भाग के बिना
- 12. समान चौड़ाई वाले बटन कैसे बनाते हैं?
- 13. आप एक धार फ़ाइल सूचकांक कैसे बनाते हैं?
- 14. शो टेबल के साथ मेल खाने वाले टेबल नाम
- 15. जेएसओएन प्रारूप में किसी विशेष कीवर्ड से मेल खाने वाले सभी एनपीएम पैकेज कैसे प्राप्त करें?
- 16. JQuery UI - एकाधिक divs से मेल खाने वाले चयनकर्ता को रोकथाम कैसे लागू करें?
- 17. आप केवल पढ़ने वाले सदस्य वाले इंटरफ़ेस के लिए यूनिट-परीक्षण स्टब कैसे बनाते हैं?
- 18. आप रेटिंग कार्यान्वयन कैसे बनाते हैं?
- 19. आप डब्ल्यूसीएफ टेस्ट पेज कैसे बनाते हैं?
- 20. आप कैलियर की प्रतिलिपि कैसे बनाते हैं?
- 21. आप एक छवि झपकी कैसे बनाते हैं?
- 22. आप एक असेंबलर कैसे बनाते हैं?
- 23. आप शेफ संसाधन वैकल्पिक कैसे बनाते हैं?
- 24. MySQL आप क्लस्टर्ड इंडेक्स कैसे बनाते हैं?
- 25. आप जावास्क्रिप्ट में कक्षाएं कैसे बनाते हैं?
- 26. आप लिनक्स जीयूआई कैसे बनाते हैं?
- 27. आप मूस में उपप्रकार कैसे बनाते हैं?
- 28. आप पर्ल में ऑब्जेक्ट्स कैसे बनाते हैं?
- 29. आप जावा में शब्दकोश कैसे बनाते हैं?
- 30. आप UIBarButtonItem एनीमेशन फ्लिप कैसे बनाते हैं?
क्यों नहीं हैडर (sprintf ('Etag: "% x-% x-% 016x"', $ fs ['ino'], $ fs ['size'], $ fs ['mtime'])) ; '? –
मैंने देखा कि मेरे अपाचे सर्वर के ईटाग का एमटीआईएम हिस्सा वास्तव में एक बहुत सटीक एमटीआईएम है, यह माइक्रोसॉन्ड का भी उपयोग करता है। तो अगर आप एटैग को ठीक तरह से उत्पन्न करना चाहते हैं जैसे अपाचे करता है तो आपको mtime के microtime की आवश्यकता होगी। मेरे ज्ञान के लिए PHP में यह संभव नहीं है। हालांकि आप यह कर सकते हैं कि अपाचे का एमटीएम _ _ पर्याप्त है (<1 सेकंड), तो आप कम से कम '304 संशोधित नहीं' कर सकते हैं। – Halcyon