2014-11-05 10 views
6

रेल 4 खंड कैश अमान्यता में सहायता के लिए cache_digests (https://github.com/rails/cache_digests) का उपयोग करता है: cache_digests टेम्पलेट का MD5 हैश बनाता है और इसकी सभी ज्ञात निर्भरताओं, एक नई कुंजी असाइन करके खंड कैश को अमान्य करने की इजाजत देता है टेम्पलेट या इसकी निर्भरता में परिवर्तन।शैलियों के साथ 4 टुकड़े कैशिंग शैलियोंhet_link_tag

मेरा प्रश्न है: क्या stylesheet_link_tag को विभाजित करने के लिए एक टुकड़ा कैश लपेटा जाएगा यदि 0.cके दौरान application.css फ़ाइल के MD5 हैश बदलते हैं? अभी हमारे हेडर में यह करें:

<% cache("header-cache-key") do %> 
    <%= stylesheet_link_tag "application" %> 
    <%= javascript_include_tag "application" %> 
<% end %> 

क्या यह सुरक्षित है? मेरा डर यह है कि जब सीएसएस या जेएस बदलता है, application-xxxxxxx.cssapplication-yyyyyyy.css बन जाएगा, लेकिन हमारे हेडर को पुराने application-xxxxxxx.css के साथ कैश किया जाएगा। फिर application-xxxxxxx.csspublic/assets से चला गया है, तो इसका परिणाम बदसूरत पृष्ठ होगा।

उत्तर

1

संकलित सीएसएस/जेएस में परिवर्तनों पर कैश को बर्बाद/अमान्य नहीं किया जाएगा।

जिस तरह से रेल कोड कोड पर कैश को धक्का देता है, वह फ़ाइल की हैश को दृश्य की कैश कुंजी में डालने से किया जाता है।

E.g कहें कि आपके पास app/views/layouts/application.html.erb पर एक व्यू फ़ाइल है। रेल फ़ाइल की सामग्री से हैश उत्पन्न करता है (यानी HTML/रूबी कोड, निष्पादित आउटपुट नहीं)। आइए उत्पन्न हैश उत्पन्न करें 'abdefg123' है।

तो application.html.erb निम्नलिखित कैश कोड है:

<% cache("header-cache-key") do %> 
    <%= stylesheet_link_tag "application" %> 
    <%= javascript_include_tag "application" %> 
<% end %> 

उत्पन्न वास्तविक कैश कुंजी लाइनों "views/layouts/application-abcdefg123/header-cache-key" के साथ कुछ न कुछ है।

संकलित सीएसएस/जेएस में बदलाव के रूप में वास्तव में फ़ाइल में रूबी/एचटीएमएल नहीं बदलता है, लेआउट कोड के लिए गणना की हैश बदलती नहीं है और इसलिए 'हेडर-कैश-की' के लिए कैश कुंजी वही है, जिसका अर्थ है कि कैश को बर्बाद नहीं किया जाता है।

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