2010-04-03 22 views
9

PHP tarafından oluşturulan bir dosyayı önbelleğe almak için, 'Pragma: no-cache' başlığının değil ayarlandığından emin olmak istiyorum. Ancak, önceden ayarlanmış bir üstbilgiyi nasıl silebilirim? olduğuPHP'de bir üstbilgi silme

, bu mümkün olabilir, kod birisi bir yerde header('Pragma: no-cache'); yazdım ve şimdi emin başlık gönderilmez yapmak istiyoruz.

header('Pragma:'); 

ya da (görünüşe göre, belgesiz olması veya iyi gizlenmiş olurdu) delete_header() gibi bir şey vardır:

yeterli bunun için mi?

+2

PHP açık kaynak kodlu bir yazılım olduğundan, orada "belgesiz ve iyi gizlenmiş" bir şey olması saçmalık olurdu. – selfawaresoup

+3

@Techpriester: Tamamen belgelenmemiş OS projeleri düzinelerce biliyorum ve iyi gizlenmiş de istemeden de olabilir. – Boldewyn

cevap

13

header_remove() Kontrol 5,3

header_register_callback() php beri de yakında

+0

Harika, teşekkürler. Bu üzücü bir şey, PHP'nin bu yeni düşüncesi (son olarak, HTTP kullanımı PHP'nin temel bir uygulama alanıdır). – Boldewyn

+4

php 5.3 öncesi çözümler nelerdir? Şu anda PHP/5.2.17 – Pacerier

+0

@Pacerier php için <5.3.0 "başlığına sahip ('Pragma:'); iş yapar. Tarayıcı herhangi bir 'Pragma' başlığı almıyor (hatta boş). – maliayas

2
Sen header() için ikinci argüman ileterek önceden belirlenen başlığı geçersiz kılabilir

:

void header (string $string [, bool $replace = true [, int $http_response_code ]]) 

manual for header()

+0

Bunu biliyorum, ama eğer bu yeterliyse, yani eğer başlık() için sadece 'Pragma:' sağlıyorsa, onu gönderilenler listesinden silecektir. – Boldewyn

+1

@Boldewyn Hayır, onu gönderilmiş olanlar listesinden silmeyecektir. Herhangi bir değer ile geçersiz kılar, bu da istenen sonuç aynı olmasına rağmen, gereksiz yere bayt gönderiyoruz, çünkü tel üzerinde "Pragma" dizesini göndermemiz gerekecek. – Pacerier

1

'Pragma' başlıkları davranışları spec tarafından tanımlanmamış - wi rağmen Dely tutulan bir 'Pragma: No-önbellek' başlığı gönderen tarayıcı üzerinde bazı etkiye sahip olacağına inanıyorum, aslında neredeyse evrensel olarak göz ardı edilir (ve kullandığım herhangi bir php yüklemesi ile asla iade edilmez).

Tarayıcıya içerik önbellekleme yapmamasını söylemek için geçmişte bir tarih içeren bir son kullanma başlığı, önbellek değeri olmayan bir Önbellek denetimi başlığı veya (sinsi olmak istiyorsanız) bir 'Değişir : Tarih 'başlığı. Bu tür başlıklardan herhangi birinin yokluğunda istemci sayfayı önbelleğe almamalıdır.

Bu nedenle, bir sayfanın önbelleğe alınabilir olmasını istiyorsanız, son kullanma tarihlerini ve önbellek denetimi başlıklarını ayarlayın.

C.

+0

Bu soruya cevap vermiyor. Soru, önbelleklemenin nasıl uygulanacağına değil "PHP'de bir üstbilgiyi silme" konusudur. – Pacerier

+1

Hayır - OP'nin başarmaya çalıştığı şey, içeriğin önbelleğe alınabilir olmasını sağlamaktır - pragma üstbilgisinin silinmesi, bu – symcbean

+0

ile ilgisi olmadığını, sorunun "önceden ayarlanmış bir üstbilgiyi nasıl silebilirim?" – Pacerier

3

Bu sorunun eski ve zaten yanıtlandığını biliyorum. Ancak bazı cevaplar, insanlara yanlış izlenim bırakabilir. Yanıt başlıklarınız Pragma: no-cache içeriyorsa, aslında bir web tarayıcısının diğer ayarlardan bağımsız olarak bir kaynağı önbelleğe almasını engelleyeceğinden emin olabilirsiniz.

Tabii ki en azından PHP 5.3 kullanıyorsanız, Pragma üstbilgisini header_remove('Pragma'); kullanarak kaldırabilirsiniz.

İlgili konular