2009-09-17 5 views
18

मेरे पास एक वेबसाइट है और मैंने सभी पृष्ठों/छवियों और स्क्रिप्ट पर समाप्ति शीर्षलेख जोड़े लेकिन मुझे नहीं पता कि मैं बाहरी स्क्रिप्ट पर समाप्ति शीर्षलेख कैसे जोड़ सकता हूं।मैं अपने सर्वर पर नहीं होने वाली स्क्रिप्ट के लिए समाप्ति शीर्षलेख कैसे जोड़ सकता हूं?

उदाहरण के लिए Google Analytics - यह समाप्त हो गया हैडर 1 दिन तक सेट हो गया है।

Google मेरी समस्या है, बाहरी वेबसाइटों की कुछ अन्य स्क्रिप्ट वास्तविक समस्या हैं, उनके पास विस्तारित शीर्षलेख नहीं हैं।

उत्तर

19

आप केवल अपने सर्वर पर जाने वाले अनुरोधों के जवाब में हेडर फ़ील्ड जोड़ सकते हैं। अगर अनुरोध किसी अन्य सर्वर पर जाता है, तो Google के सर्वर से, Google के सर्वर की तुलना में अनुरोध का उत्तर दें।

तो आपकी समस्या का एकमात्र समाधान आपके सर्वर पर बाहरी संसाधनों को होस्ट कर रहा है। लेकिन यह केवल तभी संभव है जब वह संसाधन स्थैतिक हों, अनुरोध के अनुरोध से अनुरोध न करें और अन्य चीजों पर निर्भर न हों।

0

आप नहीं कर सकते।

फ़ाइल होस्ट करने वाले व्यक्तियों को ई-मेल करने का प्रयास करें और उन्हें समाप्त करने के लिए उन्हें समाप्त करने का प्रयास करें।

2

Thats संभव नहीं है।

अनुशंसित नहीं (और हमेशा संभव नहीं): यदि इसकी स्थिर सामग्री, इसे एक स्क्रिप्ट के साथ prefetch और अपने स्वयं के शीर्षलेख सेट करें।

2

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

<?php 
header('expire-header'); 

echo file_get_contents('http://www.extern.al/website/url'); 
+0

हो जाएगा ताकि सभी बाहरी लिपियों के लिए काम नहीं करते, मैंने एक Magento साइट के लिए प्रयास किया है, लेकिन ठीक से काम नहीं कर रहा है। – prajosh

19

एकमात्र तरीका स्क्रिप्ट बनाना है जो बाहरी साइट से सामग्री डाउनलोड करता है और फिर आवश्यक शीर्षलेख जोड़ता है।

<script type="text/javascript" src="http://external.example.com/foo.js"></script> 

<script type="text/javascript" src="external.php?url=http://external.example.com/foo.js"></script> 

और external.php चाहते

<?php 
header("Expire-stuff: something"); 
echo file_get_contents($_GET['url']); 

कुछ बेशक इस सुरक्षा छेद है तो मैं external.php तरह पहचानकर्ता तार का उपयोग करने की सलाह देते हैं है? फ़ाइल = foo.js और फिर

$files = array('foo.js' => 'http://external/...'); 
if(isset($files[$_GET['file']])) 
{ 
    echo file_get_contents($files[$_GET['file']]); 
} 

file_get_contents() निश्चित रूप से आपके कुछ बैंडविड्थ लेंगे, इसलिए परिणाम को कैश करने की भी सिफारिश की जाएगी।

+0

दिलचस्प! क्या इसका कोई गति प्रभाव पड़ता है? – v3nt

-9

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

+0

सस्ते चाल के बजाय मानकों का पालन करने की आवश्यकता है। –

0

निम्नलिखित आपके लिए उपयोगी हो सकता है।

ExpiresActive On 

ExpiresDefault "access plus 1 seconds" 

ExpiresByType image/x-icon "access plus 2692000 seconds" 

ExpiresByType image/jpeg "access plus 2692000 seconds" 

ExpiresByType image/png "access plus 2692000 seconds" 

ExpiresByType image/gif "access plus 2692000 seconds" 

ExpiresByType application/x-shockwave-flash "access plus 2692000 seconds" 

ExpiresByType text/css "access plus 2692000 seconds" 

ExpiresByType text/javascript "access plus 2692000 seconds" 

ExpiresByType application/x-javascript "access plus 2692000 seconds" 

ExpiresByType text/html "access plus 600 seconds" 

ExpiresByType application/xhtml+xml "access plus 600 seconds" 

+1

नहीं। आप इसे केवल अपनी जेएस फ़ाइल के लिए जोड़ सकते हैं। आप इसे बाहरी जेएस फ़ाइल के लिए नहीं जोड़ सकते हैं। –

0

मैं आप प्रत्येक लिपियों के लिए अलग अलग समय सीमा समाप्त दिनांक स्पष्ट करने देते हैं कि कि कोड का एक संस्करण बना दिया है:

<?php 

$files = array(
    'ga.js' => 'https://ssl.google-analytics.com/ga.js', 
    'bsa.js' => 'https://s3.buysellads.com/ac/bsa.js', 
    'pro.js' => 'https://s3.buysellads.com/ac/pro.js' 
); 

if(isset($files[$_GET['file']])) { 
    if ($files[$_GET['file']] == 'ga.js'){ 
     header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + ((60 * 60) * 48))); // 2 days for GA 
    } else { 
     header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // Default set to 1 hour 
    } 

    echo file_get_contents($files[$_GET['file']]); 
} 

?> 

और जानकारी: https://www.catswhocode.com/blog/php-how-to-add-expire-headers-for-external-scripts