2016-07-14 30 views
21

मैं अपने httpd.confउत्तोलन ब्राउज़र कैशिंग जे एस

ExpiresActive On 
ExpiresDefault "access plus 1 month" 
ExpiresByType image/gif "access plus 1 month" 
ExpiresByType image/jpeg "access plus 1 month" 
ExpiresByType image/png "access plus 1 month" 
ExpiresByType text/css "access plus 1 month" 
ExpiresByType text/javascript "access plus 1 month" 
ExpiresByType application/x-javascript "access plus 1 month" 

यह छवियों, फोंट फ़ाइलों के लिए ब्राउज़र कैशिंग, साइट खुद CSS और JS फ़ाइलों के साथ मदद करता है पर समाप्ति की स्थापना की है। लेकिन मैं यह भी बाहरी जे एस मेरी वेबसाइट में शामिल किया है:

http://connect.facebook.net/en_US/sdk.js (20 minutes) 
http://apis.google.com/js/client.js (30 minutes) 
https://apis.google.com/js/rpc:shindig_random.js?onload=init (30 minutes) 
https://platform.twitter.com/widgets.js (30 minutes) 
https://www.google-analytics.com/analytics.js (2 hours) 

गूगल Pagespeed जानकारी कहते हैं ऊपरी फ़ाइलों के लिए: स्थिर संसाधनों के लिए HTTP हेडर में कोई समाप्ति दिनांक या अधिकतम आयु स्थापना ब्राउज़र को यह निर्देश पहले से लोड करने के लिए नेटवर्क के बजाय स्थानीय डिस्क से डाउनलोड संसाधन।

ब्राउज़र बाहरी कैश को इस बाहरी जेएस फाइलों का लाभ उठाने के लिए कैसे करें? कोई मदद ?

उत्तर

30

एक कष्टप्रद मुद्दा, वास्तव में। आसानी से ठीक करने योग्य नहीं है, मुझे डर है। लेकिन आप क्या कर सकते हैं cron का उपयोग करें।

सबसे पहले, ध्यान रखें कि Google आपको अपने स्वयं के टूल (Analytics की तरह) के लिए दंडित करने की संभावना नहीं है। हालांकि, जैसा कि पहले उल्लेख किया गया है, इसे cron का उपयोग करके ठीक किया जा सकता है, जिसका मूल रूप से मतलब है कि आप जावास्क्रिप्ट को स्थानीय रूप से लोड करते हैं और अपडेट की गई स्क्रिप्ट खींचते हैं।

कैसे करना है यह: सब से

सबसे पहले, आप स्क्रिप्ट जिसे आप चला रहे डाउनलोड करना होगा। मैं एक उदाहरण के रूप में Google Analytics का उपयोग कर रहा हूं (यह सबसे समस्याग्रस्त स्क्रिप्ट लोगों के बारे में शिकायत करता है, लेकिन आप इसे किसी बाहरी स्क्रिप्ट के लिए दोहराना कर सकते हैं)।

हमारे कोड में देखें और स्क्रिप्ट का नाम ढूंढें, हमारे मामले में यह है: google-analytics.com/ga.js। इस यूआरएल को अपने वेब ब्राउजर में पॉप करें और यह सोर्स कोड लाएगा। बस इसकी एक प्रति बनाएं और इसे ga.js के रूप में सहेजें।

सहेजें अपने वेब सर्वर पर इस नव निर्मित JavaScript फ़ाइल, मेरे मामले में:

- JS 
    - ga.js 

इसके बाद आप उन पृष्ठों को अपनी स्क्रिप्ट बुला रहे हैं पर कोड अपडेट करने और सिर्फ निर्देशिका है कि फोन करने को बदलने की आवश्यकता होगी जावास्क्रिप्ट फ़ाइल। एक बार फिर हमारे मामले में, हम इस लाइन को बदलने की जाएगी:

ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 

ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.yoursite.com/js/ga.js'; 

को इस बिंदु पर, आपकी साइट अब स्थानीय स्तर पर अपनी वेबसाइट से स्क्रिप्ट चलाने होगा! हालांकि, इसका मतलब है कि स्क्रिप्ट कभी अपडेट नहीं होगी। जब तक आप हर सप्ताह इस छोटी प्रक्रिया को फिर से चला नहीं लेते। यह आप पर निर्भर है .. लेकिन मैं इसके लिए बहुत आलसी हूं।

बस के बारे में हर एक होस्टिंग सेवा आप cron नौकरियों स्थापित करने के लिए के लिए एक विकल्प होगा:

यह जहां क्रॉन खेलने में आता है। होस्टिंगर पर यह आपके होस्टिंग पैनल पर है, गोडाडी पर आपको इसे सामग्री विकल्प के तहत मिल जाएगा।

निम्न स्क्रिप्ट को अपने cron पर रखें, और आपको बस इतना करना है कि वेरिएबल $localfile के पूर्ण पथ को बदल दें। यह स्क्रिप्ट क्या करता है ga.js फ़ाइल के लिए Google से अद्यतन स्क्रिप्ट खींचती है। आप इस प्रक्रिया को चलाने के लिए कितनी बार चाहते हैं कि आप समय सीमा निर्धारित कर सकते हैं। महीने में और उसके बाद हर घंटे एक बार से लेकर एक बार।

यदि आप Google Analytics के अलावा बाहरी फ़ाइलों के लिए भी ऐसा कर रहे हैं, तो आपको चर $remoteFile को बदलने की भी आवश्यकता होगी। तो $remoteFile बाहरी जावास्क्रिप्ट फ़ाइल का यूआरएल है और परिवर्तनीय $localFile आप अपने नए स्थानीय रूप से संग्रहीत फाइल को पथ डाल देंगे, उतना आसान!

<? 
// script to update local version of Google analytics script 

// Remote file to download 
$remoteFile = 'http://www.google-analytics.com/ga.js'; 
$localfile = 'ENTER YOUR ABSOLUTE PATH TO THE FILE HERE'; 
//For Cpanel it will be /home/USERNAME/public_html/ga.js 

// Connection time out 
$connTimeout = 10; 
$url = parse_url($remoteFile); 
$host = $url['host']; 
$path = isset($url['path']) ? $url['path'] : '/'; 

if (isset($url['query'])) { 
    $path .= '?' . $url['query']; 
} 

$port = isset($url['port']) ? $url['port'] : '80'; 
$fp = @fsockopen($host, '80', $errno, $errstr, $connTimeout); 
if(!$fp){ 
    // On connection failure return the cached file (if it exist) 
    if(file_exists($localfile)){ 
    readfile($localfile); 
    } 
} else { 
    // Send the header information 
    $header = "GET $path HTTP/1.0\r\n"; 
    $header .= "Host: $host\r\n"; 
    $header .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\r\n"; 
    $header .= "Accept: */*\r\n"; 
    $header .= "Accept-Language: en-us,en;q=0.5\r\n"; 
    $header .= "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n"; 
    $header .= "Keep-Alive: 300\r\n"; 
    $header .= "Connection: keep-alive\r\n"; 
    $header .= "Referer: http://$host\r\n\r\n"; 
    fputs($fp, $header); 
    $response = ''; 

    // Get the response from the remote server 
    while($line = fread($fp, 4096)){ 
    $response .= $line; 
    } 

    // Close the connection 
    fclose($fp); 

    // Remove the headers 
    $pos = strpos($response, "\r\n\r\n"); 
    $response = substr($response, $pos + 4); 

    // Return the processed response 
    echo $response; 

    // Save the response to the local file 
    if(!file_exists($localfile)){ 
    // Try to create the file, if doesn't exist 
    fopen($localfile, 'w'); 
    } 

    if(is_writable($localfile)) { 
    if($fp = fopen($localfile, 'w')){ 
     fwrite($fp, $response); 
     fclose($fp); 
    } 
    } 
} 
?> 

कि यह है, और किसी भी समस्या उत्तोलन ब्राउज़र कैशिंग तीसरे पक्ष लिपियों के साथ कर रहे ठीक करना चाहिए।

स्रोत: http://diywpblog.com/leverage-browser-cache-optimize-google-analytics/

नोट:

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

+1

वास्तव में एक उत्तरदायी उत्तर। Kudos – Beaniie

+1

वाह ..! वास्तव में अच्छा जवाब। –

2

यह सुनिश्चित नहीं है कि यह कोड स्निपेट किसी की मदद करेगा, लेकिन फिर भी मैं बाहरी जेएस फ़ाइल को कैश करता हूं।

<script> 
$.ajax({ 
type: "GET", 
url: "https://www.google-analytics.com/analytics.js", 
success: function(){}, 
dataType: "script", 
cache: true 
}); 
</script> 
संबंधित मुद्दे