2010-08-11 14 views
5

के साथ प्रॉक्सी कैशिंग अक्षम करने के लिए कैसे करें मुझे एक समस्या है जहां कॉरपोरेट प्रॉक्सी सर्वर विभिन्न लॉग इन उपयोगकर्ताओं के लिए पृष्ठ परोसता है। मुझे लगता है कि मैं प्रॉक्सी कैशिंग को अक्षम करके इस समस्या को हल कर सकता हूं। This page htaccess में निम्नलिखित स्निपेट शामिल पता चलता है:.htaccess

ExpiresDefault A0 
Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0" 
Header set Pragma "no-cache" 

मैं इसे समझ लिया है के रूप में (Googling द्वारा), समय-सीमा समाप्त हैडर केवल प्रॉक्सी द्वारा पढ़ा जाता है, तो मैं भी बस "हैडर सेट समाप्त हो रहा है 0" का उपयोग कर सकते हैं?

मुझे लगता है कि यह स्टाइलशीट, छवियों और अन्य संपत्तियों के कैशिंग को रोक देगा (हालांकि केवल प्रॉक्सी द्वारा, ब्राउजर नहीं)?

इससे निपटने का सबसे अच्छा तरीका क्या है? मैं PHP चला रहा हूं, और अगर इसकी अनुशंसा की जाती है, तो PHP के माध्यम से हेडर को आसानी से संशोधित कर सकते हैं।

मेरे पास परीक्षण के लिए प्रॉक्सी सर्वर तक पहुंच नहीं है।

+0

@ सुमुराई 8 यह एक डुप्ली नहीं है, क्योंकि यह विशेष रूप से प्रॉक्सी कैशिंग नहीं है wser कैशिंग। – Petah

+0

मुझे लगता है कि मैंने तब अच्छी तरह से पढ़ा नहीं था। मुझे नहीं लगता कि यह विश्वसनीय रूप से ऐसा करना संभव है, लेकिन हम देखेंगे। – Sumurai8

उत्तर

0

उपयोग:

ExpiresActive पर

ExpiresDefault अब

हैडर सेट कैश-नियंत्रण "नहीं-कैश, कोई दुकान, चाहिए-पुनः सत्यापित, अधिकतम उम्र = 0, proxy- दोबारा सत्यापित, कोई रूपांतरण नहीं "

हैडर Pragma सेट" नहीं-कैश "

+0

और यह ब्राउज़र को कैश करने और प्रॉक्सी करने की अनुमति देगा? – Petah

1

http 1.1 कल्पना (RFC 2616) अध्याय 14.9.1

private 
    Indicates that all or part of the response message is intended for 
    a single user and MUST NOT be cached by a shared cache. This 
    allows an origin server to state that the specified parts of the 

हैडर सेट कैश-नियंत्रण से "निजी, ..." काम कर देता है।

समाप्ति शीर्षलेख की कोई आवश्यकता नहीं है। कैश-कंट्रोल: अधिकतम आयु ओवरराइड फ़ील्ड समाप्त हो जाती है। आरएफसी अनुभाग देखें: 14.21

आपको वितरित सामग्री के आधार पर आपको विभिन्न कैशिंग हेडर भेजना चाहिए।

निम्नलिखित उदाहरण वेबसाइट में स्थिर सामग्री वितरित करने वाली वेबसाइट के लिए है और उपयोगकर्ताओं में लॉग इन करने के लिए सामग्री बदलती है। उपयोगकर्ताओं में लॉग इन सत्र कुकी की उपस्थिति से पहचाना जाता है: MYSESSID।

  • डिफ़ॉल्ट रूप से 5min सार्वजनिक कैशिंग
  • 365 दिन स्थिर फाइलों पर सार्वजनिक कैशिंग की अनुमति दें अनुमति दें
  • के लिए उपयोगकर्ताओं में लॉग इन
  • गतिशील पर/कैशिंग इंकार/*

5min निजी कैशिंग की अनुमति दें
RewriteEngine On 
# Flag files in /static as STATIC 
RewriteRule ^static - [E=STATIC:1] 

# Flag requests by logged in users as PRIVATE 
# Users are identified by presence of MYSESSID cookie 
# Ignores files in: /static 
RewriteCond %{HTTP_COOKIE} MYSESSID 
RewriteCond %{REQUEST_URI} !^/static 
RewriteRule^- [E=PRIVATE:1] 

# Tell proxy servers that contents not in /static vary based on the given cookies 
RewriteCond %{REQUEST_URI} !^/static 
RewriteRule^- [E=VARY:1] 

# Flag requests to /dynamic as NO_CACHE 
RewriteRule ^dynamic - [E=NO_CACHE:1] 


## Default Cache-Control 
# Per default, any content is public and 5min cacheable 
Header set Cache-Control "public, max-age=300" 

## Static Files 
# Static files are public and 365d cacheable. 
Header set Cache-Control "public, max-age=31536000" env=STATIC 
# Reset age, indicates objects as fresh 
Header set Age 0 env=STATIC 

## Private responses 
# private. Allow 5min caching 
Header set Cache-Control "private, max-age=300" env=PRIVATE 

## Deny caching 
Header set Cache-Control "private, max-age=0, no-cache, no-store, must-revalidate" env=NO_CACHE 

## Vary rules 
Header append Vary: Cookie env=VARY 
+0

क्या आप नियमों को छोटा कर सकते हैं? – Petah

+0

संक्षिप्त उत्तर है: 'हैडर सेट कैश-कंट्रोल "निजी, अधिकतम आयु = एन" '। यह केवल 'एन' सेकंड के लिए ब्राउज़र में सभी सामग्री को कैश करने योग्य बनाता है। – jgb