2010-08-11 21 views
5

Şirket proxy sunucularının farklı oturum açmış kullanıcılar için sayfayı görüntülediği bir sorunum var. Proxy önbelleklemeyi devre dışı bırakarak bu sorunu çözebileceğimi düşünüyorum. This page htaccess aşağıdaki pasajı dahil öneriyor:.htaccess ile proxy önbelleğe alma nasıl devre dışı bırakılır

I (Googling) bunu anladım gibi
ExpiresDefault A0 
Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0" 
Header set Pragma "no-cache" 

, sadece başlık vekilleri tarafından okunur sona eriyor, bu yüzden de sadece "Başlık seti 0 sona eriyor" kullanmalıdır?

Bu durum, stil sayfalarının, resimlerin ve diğer öğelerin önbelleğe alınmasını da önleyebilir (yalnızca tarayıcılar tarafından değil, proxy'lerde de olsa)?

Bununla başa çıkmanın en iyi yolu nedir? PHP'yi çalıştırıyorum ve eğer varsa, PHP üzerinden de başlıkları kolayca değiştirebilirim.

Test için proxy sunucusuna erişimim yok.

+0

@ Sumurai8 bu bir dupe değil, özellikle proxy önbelleğe alma hakkında değil wser önbelleğe alma. – Petah

+0

Sanırım o zaman iyi okumadım. Bunu güvenilir bir şekilde yapmanın mümkün olduğunu düşünmüyorum ama göreceğiz. – Sumurai8

cevap

0

Kullanım:

ExpiresDefault On

ExpiresActive şimdi

Başlık Cache-Control "no-cache, no-store, olmalı-revalidate, max-age = 0, proxy- set no-transform, revalidate" Pragma set

Başlık "no-cache"

+0

Ve bu, tarayıcıların önbelleğe almasına ve proxy'lere izin vermeyecek mi? – Petah

1

http 1.1 spesifikasyonu (RFC 2616) bölüm 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 

Başlık set Cache-Control itibaren "Özel ..." hile yok.

Expires üstbilgisine gerek yoktur. Önbellek Denetimi: Maks. Yaş Geçerlilik alanını geçersiz kılar. Bkz. RFC Bölüm: 14.21

Yayınladığınız içeriğe bağlı olarak farklı önbellek başlıkları göndermelisiniz. Aşağıdaki örnek, statik içeriğin/statik olarak gönderildiği ve giriş yapmış kullanıcılar için içerik değiştirdiği bir web sitesi içindir. Oturum açmış kullanıcılar, oturum çerezinin varlığıyla tanımlanır: MYSESSID.

  • varsayılan olarak 5 dk kamu önbelleğe alma
  • statik dosyalar üzerinde 365 gün kamu önbelleğe izin ver
  • kullanıcılar giriş

*/dinamik/önbelleklemeyi Deny için 5dk özel önbelleğe alma izin ver
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

Kuralları kısaltabilir misin? – Petah

+0

Kısa Cevap: 'Header set Cache-Control 'özel, maks-yaş = N''. Tüm içeriği tarayıcılarda sadece 'N' saniye için önbellekte saklar. – jgb

İlgili konular