Önbellek için stil değişikliği kaydediliyor. Keshuvannya'nın en iyi uygulaması. .htaccess için alternatif önbellek yöntemi

Golovna / Google Oyun

Bazen sayfayı önbelleğe almak için tarayıcıyı engellemek gerekir, üzerindeki bilgi parçaları hızlı bir şekilde güncellenir. Ayrıca yeni bir şekilde oluşturulacak filtreleri veya diğer içerikleri seçerek de veri oluşturabilirsiniz. Tek kelimeyle, programın yan tarafta para kazanmasını engellemenin gerekli olduğu anlar vardır. Bugün nasıl uygulanacağını biliyoruz Farklı yollar, h PHP'ye yardım et HTML veya .htaccess.

HTML'de önbellek çiti

Meta etiketlerle ilgili yardım için bunu yapabilirsiniz. Bir kerede, önbellek çiti için farklı seçenekleri analiz edeceğiz.

Tarayıcı ve proxy sunucusu tarafından önbelleğe çit

Çit önbelleği storіnki, bir tarayıcıdan daha az

Önbelleği yükleme randevu saati tarayıcı için

Aşağıdaki koda yardımcı olmak için tarayıcıya belgeyi önbellekten nasıl kaydedeceğini söyleyebiliriz. Bundan sonra önbellek güncellenecektir.

Proxy sunucusu için önbelleği son bir saat için ayarlama

Yönlendirme kodundakiyle aynı olabilir, yalnızca proxy sunucusunun maliyeti.

Yardım için para çekmeyi durdur PHP

Pratik olarak, HTML'de görünen tüm aynı şeyler, bilgileri yalnızca başlık başlıkları aracılığıyla görüntüler. Önbelleğe mutlak bir çitin nasıl uygulanacağını eksen:

", tarih("S:i:s"), ""; ?>

Şarkı söyleme saatinde keshuvati'ye izin vermek de mümkündür. Örneğin, 1 yıldan az bir süre için nakit paraya çevrilmesine izin verilir.

", tarih("S:i:s"), ""; ?>

Yardım için yandan para biriktirin. htaccess

Fikrin uygulanması kolaylığı için her şeyi eşit konfigürasyonlarda yapabilirsiniz. Apache sunucusu. Bundan önce, tezgahta gerekli modüllerin neler olduğunu tekrar gözden geçirmemiz gerekiyor. Vіdkrivаєmo konfіgurаtsіy Apache dosyası Ve korkarım resme geleceğim:

LoadModule Expires_module Modules/mod_expires.so LoadModule headers_module Modules/mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c

Şimdi önbelleğe alınmış verilerden korunan .htaccess dosyası. Gördüğünüz gibi, .htaccess dosyası ait olduğu dizine ve tüm alt dizinlere genişletilecektir.

# Önbellek Kontrol başlığı Başlık, Önbellek Denetimi "depolama yok, önbellek yok, yeniden doğrulanmalıdır"# Başlığın süresi doluyor ExpiresActive On ExpiresDefault "şimdi"

Nakit akışı çitinin ilgiyi sunucuya ittiğine saygı duymak önemlidir. Tom, zim'e dikkat et! Belgeleri kaydedebileceğiniz bir şarkı saati ayarlamak daha iyidir. Örneğin 1 yıllık bir önbellek kuralım:

# Önbellek Kontrol başlığı Başlık, Cache-Control "public" ekler# Başlığın süresi doluyor ExpiresActive On ExpiresDefault "erişim artı 1 saat"

Visnovok

Sitede değişiklik yaparken genellikle buna bağlı kalırız, çünkü kenarlar yerine css dosyaları ve komut dosyaları (.js) tarayıcı tarafından önbelleğe alınır ve bunu uzun süre yapmak imkansızdır. Değişikliklerin tüm tarayıcılarda görünmesi için, istemcileri F5 veya Ctrl+F5 katlama kombinasyonlarına alıştırmak gerekir. Stezhity saat içinde І saat, böylece kokusu koştu.

Bitirme süreci sıkıcı ve elverişsizdir. Dosyaları yeniden adlandırarak kolayca durumdan çıkabilirsiniz ama bir daha yapamam.

Ancak, çok fazla adla fazlalığa izin vermenin ve ihtiyacımız olursa, o anda cache.css veya .js dosyalarını bırakmanın bir yolu var. Ctrl+F5'i sonsuza kadar unutun.

Sonuç olarak, .css veya .js dosyalarımıza, sonunda saati saat olarak değiştiren ve aynı zamanda tarayıcının önbelleğini temizleyen bir sözde parametre atadık.

Bu sırayla, çıkış kodundaki giriş şu şekilde görünür:

De 186485 - aynı dosyayı görebilmeniz için tam bir kombinasyon, ancak tarayıcı onu yeni, zavdyaki sözde parametresi olarak yorumluyor ?186485

Şimdi parametremizin tüm girdilerini değiştirmemek için ihtiyacımız olan her şeye bağlı bir php dosyasına koyuyoruz:

">

param.php dosyasında şunlara ihtiyacınız olabilir:

Hazır! Şimdi dosyayı değiştirirken param.phpÖnbellek dosyaları bırakılır.

Joomla'dan ne haber?

Burada perakendeciler bizim için her şeyi düşündüler ve kabul edilen söz dizimini takip etmeliyiz:

JHtml::_("stylesheet", "template.css", array("version" => "auto", "relative" => true)); JHtml::_("script", "template.js", array("version" => "auto", "relative" => true));

Şablon klasöründen css dosyası template.css'yi (veya 3 komut dosyası içeren dosya için template.js) dahil etmek için atama kodu. "version" => "auto" ikamesi bir değer olup olmadığı ayarlanabilir, örneğin "version" => "1.1" - çıktıda, bu parametre bir dosya bağlanırken güç işaretinden sonra kullanılmalıdır.

Göreceli => true parametresi, sistemin şablon klasörü için referans dosyasını bilmesi gerektiği anlamına gelir. Alternatif olarak, göreceli => false, .css veya .js dosyasının yolunu belirtmeniz gerekecektir.

Bazı insanlar CSS dosyalarının tanıtıldığını, bağlantı veya @import yoluyla bağlandıklarını düşünüyor - önbelleğe almayın. Sizi hayal kırıklığına uğratacak izlenimler. Css'nin kendisi bir okremium dosyasında önbelleğe alınır, üstelik daha iyi, görünür bir şekilde söyleyebilirim. Bu bilgiler 6 ve daha fazla tarayıcıda ve diğer tarayıcılarda gerçek olarak doğrulanmıştır. Bagato kohana bu tür dosyalarda paraya çevrildi zovsіm vahşi swidkіstyu, sağda qiu için otrimuє ilk sırada. Bundan bahsetmişken, Opera'nın mekanizmasının benzer tarayıcılarda çok fazla akıcılığa sahip olabileceği çok şey var. Ancak Opera'daki çok "süper" önbelleğin AJAX teknolojisiyle tam bir karmaşa olduğunu kesinlikle belirteceğim. O saatte, vikoristanny AJAX durumunda olduğu gibi chiki demetlerinde değişiklik yapmak için Opera eski alır. Ale tse şarkı okremoї olanlar indir.

CSS önbelleği

ALE! Buvayut, doğrudan tsomu'daki deyakih keder problemlerinde. Kural olarak, Apache sunucusunun yanlış kurulumu ile hangi tür doğru başlıkları tanımıyor. Ve başlığın yardımı için dosyaları önbelleğe alabilirsiniz. Zamovchuvannyam için, açıkçası, kapanımların önbelleği. Dosyaları önbelleğe almanız gerekmiyorsa Ale traplyayutsya vpadki. Profesyoneller, HTTP başlıklarını yönlendirmek için teflerle dans etmeye başladı bile. Ancak, bu makaleyi tekrar okuyorsanız, HTTP başlıklarından kaçmaktan hala çok uzaktasınız. Sana söylüyorum, önümüzdeki bir saat içinde bu tür görevlerde durmayacaksın. Yine de, sanki ruhunuzun derinliklerine ağlıyormuşsunuz gibi, nasıl gördüğünüzü kısaca anlatacağız.

  1. HTTP başlığını WEB sunucusuna gönder - chuesh, meyan kökü deyin, bana bir CSS dosyası verin, aksi takdirde CSS'im var, ancak saatin geri kalanında bunları değiştirin.
  2. Ve sunucu size çok tatlı olduğunuzu söyleyecek, o anda yıllık bir değişiklik yoktu, alın ve eski CSS'nizle cesur olun.
  3. CSS değiştirilirse, tarayıcı önbellekteki CSS'yi aptalca günceller.

Ve şimdi, tükenmemiş olsa bile, o zaman bir tür deney şeklinde bilimsel çöp yığınları.

WEB'de yeni başlayanlara alt metni söyleyeceğim, zayıf anlaşılacak. Temelde, dahil olan önbelleğin dahil edilmesi nedeniyle hala takılıp kalan bizim için iyi olacak.

Tüm deneyler gerçek, ücretli bir deney üzerinde gerçekleştirildi. HTTP başlığını kırma konusunda paranoyak olmadan HTTP başlıklarının yapısını değiştirmenize izin veren iyi bir barındırıcı :)

tarayıcı modları

Baba, orada herhangi bir tarayıcı ol 2 mod:

1. kilitli mod başlığı döndürmek için:

Önbellek Kontrolü: depolama yok, önbellek yok, yeniden doğrulama gerekir, kontrol sonrası=0, ön kontrol=0

2. Mod önbelleği etkinleştirir başlığı döndürmek için:

Önbellek Kontrolü: özel, maksimum yaş=10800, ön kontrol=10800

Ardından, tarayıcıların davranışını anlatacağım

FireFox 3.5 ve daha fazlası

Birinci Mod doğru şekilde önbelleğe alınmadı, ancak JavaScript dosyaları kontrol edilmedi, bu nedenle primus sayfayı güncellemez. CSS bir başlık ile yeniden yazılır.

If-Modified-Since: "geçerli tarih" GMT If-None-Match: "kendi karma kodu"

CSS, yalnızca gerçekten güncellenir yüklenmez yeniden tasarlanıyor.

Başka bir modu taraf değiştirmeyi durdurur. Bu nedenle, yan tarafta görüntülenen - gösterilmeyen veri tabanındaki içeriği değiştirdik, primus-primus'un içeriğini, istek tarafından düzeltilenle değiştirmek gerekiyor:

GET / HTTP/1.1 Ana Bilgisayar: xxx.com If-Modified-Since: geçerli GMT tarihi

ve dikkate alın:

HTTP/1.1 304 Değiştirilmedi

Internet Explorer 8 (IE8)

Birinci Internet Explorer modları, Değiştirildiyse ve Eşleşmezse ve JavaScript ve CSS'nin JavaScript ve CSS'yi yalnızca gerçekten kötü koktuğu için devre dışı bırakmasını sağlar. Aynı yakscho primusovo taraf değiştiriyor.

Başka bir Internet Explorer Modu ayrıca JavaScript ve css için Eğer-Modified-Since & If-None-Match'i geçersiz kılar. Ancak gezinmeyi seçerseniz, sayfanın kendisini başlatmaya/güncellemeye yardımcı olmaz, bu nedenle gezinme girişi zorlamaz, bu nedenle js / css'niz güncellenir ve sayfanın şablonu ve içeriği değildir. İçeriği güncellemek için primus güncelleme tarafını getirmek yardımcı olmuyor.

Opera 10 ve üzeri

Birinci Opera modu, ilk modda, js & CSS güncellemesinin saklanacağı gerçeğinde, ayarlarda Resimleri kontrol et seçeneğinin ayarlanmış olması. Seçenek Her Zaman olarak ayarlanmışsa, operatör js&css güncellemelerini yeniden doğrulamak için If-Modified-Since & If-None-Match'i geçersiz kılar. Değer, örneğin 5 yıl olarak ayarlanmışsa, her 5 yılda bir veya tarafın primus güncellemesini yeniden gözden geçirmek gerekir.

Başka bir modlarında, Opera js & CSS güncellemelerini geçersiz kılmaz (GET isteklerini soymaz) ve kendi tarafında GET isteklerini çalmaz, bu nedenle js & css güncellemelerini alamıyoruz, içeriği güncellemekle ilgilenmiyoruz , diğer tarayıcılarda olduğu gibi. Ve Opera'daki primusovim novlennyam ekseni daha güzel. IE ve FF görünümünde Opera, If-Modified-Since ve If-None-Match'in olmadığı tarafı açıkça gösterir. Primus güncellemesini kullanırken js ve css güncellemesini isteyin If-Modified-Since & If-None-Match ile aynı şekilde gidin.

Vişnovki

  1. Farklı tarayıcılarda nasıl çalıştığını ve nasıl miras alındığını kesinlikle göstermeyen Keshuvannya - bunu söylemek güvenli değil.
  2. Para çekme, yalnızca taraf nadiren güncellenirse açılabilir (bu nedenle, gerçek zamanlı olarak güncellendikleri için sitede sayfa yoktur)
  3. FireFox, bence, IE'den biraz daha akıllı davranıyor, böylece önbelleğe alma etkinleştirildiğinde, JavaScript'in çok nadiren güncellenmesine rağmen mantıklı görünen JavaScript'in sürekli güncellenmesini geçersiz kılmıyor.
  4. Opera, bir artı olan Kontrol görüntülerinin ek özelleştirilmesi için görüntü güncellemelerini, JavaScript'i ve CSS'yi değiştirmenize olanak tanır. Yani Opera'nın kendisi önbellek açıldığında ve primus güncellemesi açıkken IE & FF'den daha iyi davranıyor, yani sanırım Opera bir şekilde yan yerine güncellenecek ve IE & FF sizi mutlu olmaktan mahrum bırakacak. Bilinmeyen.

Size ve açılış sitelerine iyi şanslar.

  • htaccess önbelleği, doğruysa, web sitesini yerel bilgisayara kaydeder;
  • Tarayıcının Vykoristannya önbelleği - web yöneticisi, tarayıcılara kaynaklara nasıl bakılacağı konusunda talimatlar verir.

Tarayıcı web sayfasını görüntülerse, bu logonun, CSS dosyasının ve diğer kaynakların hatasıdır:

Tarayıcının önbelleği, tarayıcı bundan yararlandığı için kaynakları hatırlayacaktır. Sitenin diğer tarafına giderseniz logo, CSS dosyaları vb. Yeniden başlamak sizin suçunuz değil çünkü tarayıcı bunları çoktan unutmuş (kaydetmiş). Web sitesine ilk ziyaretin ilk saatinin bir saatten fazla, tekrar edenlerde daha kısa sürmesinin nedeni nedir?

Bir önbellek kazanırsanız, web sitesi dosyaları tarayıcı önbelleğine kaydedilir. Vіdvіduvannyah tekrarlandığında taraflar farklı bir hızda zavantazhuvatsya olacaktır. Aynı zamanda daha az kaynak vikoristovuyut gibi diğer taraflarla olacak.

Tarayıcıda önbellek nasıl devre dışı bırakılır

  • Önbelleği kazanmak için kaynakların talebi için başlıkları değiştirin;
  • Nakit stratejinizi optimize edin.

İstekteki başlıkları değiştirin

Çoğu insan için, bir htaccess sitesini önbelleğe almanın tek yolu, web sunucusundaki .htaccess dosyasına kod eklemektir.

.htaccess dosyası, web siteniz için birçok önemli parametreyi kontrol eder.

.htaccess dosyası aracılığıyla tarayıcı önbelleği

Kodun altına işaret etmek, tarayıcıya neyi önbelleğe alacağını ve uzun süre nasıl hatırlayacağını söyler. Yogo kızağı koçanı .htaccess dosyasına ekleyin:

## önbelleğe almanın süresi doluyor ## ExpiresActive On ExpiresByType image/jpg "1 yıllık erişim" ExpiresByType image/jpg "1 yıllık erişim" ExpiresByType image/gif "1 yıllık erişim" ExpiresByType image/png "1 yıllık erişim" ExpiresByType text/css "1 aylık erişim" html'de sona erer " 1 aylık erişim" ExpiresByType uygulaması/pdf "1 aylık erişim" ExpiresByType text/x-javascript "1 aylık erişim" ExpiresByType application/x-shockwave-flash "1 aylık erişim" ExpiresByType image/x-icon "1 yıllık erişim" ExpiresDefault " 1 ay erişim"## önbelleğe almanın süresi doluyor ##

.htaccess dosyasını kaydedin ve web sayfasını güncelleyin.

Farklı dosya türleri için önbellek saati nasıl ayarlanır?

Üzerine gelinen kodun ayarlanmış bir saat aralığı vardır. Örneğin, 1 rіk (1 rіk) veya 1 ay (1 ay). Koku, dosya türlerine bağlıdır. Yönlendirme daha yüksektir, kod yüklenir, böylece .jpg dosyalarının (görüntü) uzun süre önbelleğe alınması gerekir.

Yakby, JPG görüntülerinin bir ay boyunca önbelleğe alındığı gerçeğini değiştirmek istedi, ardından “1 nehir” yerine “1 ay” girdiniz. htaccess aracılığıyla daha yüksek bir önbellek değeri belirlemek çoğu web sitesi için idealdir.

.htaccess için alternatif önbellek yöntemi

Yöntemin daha fazla açıklamasına " sona eriyor“Vin, daha fazla yeni gelene para kazandırmaya yardımcı oluyor. Önbelleğe almayla uğraşmak sizin için daha kolay olduğundan, size daha fazla seçenek sunan başka bir Önbellek Denetimi önbelleğe alma yöntemini deneyebilirsiniz.

Belki Expires yöntemi sunucunuzda çalışmıyordur, bu durumda Cache-Control üzerinde ince ayar yapmayı denemek isteyebilirsiniz.

Önbellek Kontrolü

Bu yöntem, tarayıcılarda sayfaların önbelleğe alınması üzerinde daha fazla kontrol sahibi olmanızı sağlar, ancak birinin tüm ayarları bir kez yazmanın daha kolay olduğunu bilmesi daha iyidir.

.htaccess dosyasındaki bir varyasyon örneği:

Çoğu statik varlık için #1 Ay Başlık, Önbellek Kontrolü "max-age=2592000, public" olarak ayarlandı

Fareyle üzerine gelme kodu, Cache-Control başlığını dosya türüne uygun şekilde ayarlar.

Önbellek Kontrolü nasıl kullanılır

Şimdi htaccess tarayıcısındaki önbellek kodu satırına bir göz atalım:

Çoğu statik varlık için #1 Ay

Bu satır sadece bir not. .htaccess dosyası, # karakteriyle başlayan satırları yok sayar. Dosyaları önbelleğe almak için bir çözüm olarak birkaç farklı veri grubunuz olabileceğinden bu not önerilir:

Bir dizi tahmin var, öyle görünüyor ki, scho, Dosya bu türlerden biri olacaksa, onunla çalışacağız.»

Bu satırdaki en önemlileri, farklı dosya türlerinin yeni yenilenmesinde bulunanlardır ( css, JS, JPEG, PNG ve benzeri. ) ve bu dosya türlerine hangi önbellek talimatlarının yüklenmesi gerektiği. Örneğin, JPG dosyalarının belirli bir süre önbelleğe alındığını düşünmüyorsanız, " JPG". HTML eklemek istiyorsanız, bu satıra girmeniz gerekir " HTML«:

Başlık, Önbellek Kontrolü "max-age=2592000, public" olarak ayarlandı

Atanan satır, gerçek başlıklara ve anlamlara sahiptir:

  • Bölüm " Başlık seti Önbellek Kontrolü» - Başlığı girin;
  • Zminna " maksimum yaş=2592000» - Para çekme işleminin ne kadar sürdüğünü (saniye olarak) gösterin. Bu süre içerisinde bir ay (2592000) saniye boyunca para çekebiliyoruz;
  • Bölüm " halka açık» Kolayca bulunabilenleri bana bildirin.

Bu önbellek satırı aracılığıyla htaccess operatörü kapatır ve kod bloğunu sonlandırır.

Kasiyerin yakıcı sorunu

Görüntülerin bir listesini yaparken, daha fazla rock ve daha fazlası için para kazanılacağından, yanlarınızda değişiklik yaptığınızda, pis kokunun tüm coristuvachalar tarafından görülmeyebileceğini unutmayın. Oscilki koristuvachi, temel dosyalara değil, paraya çevrilen dosyalara geri dönüyor. Bu, periyodik olarak düzenlediğiniz bir dosyadır ( örneğin - CSS dosyası), daha sonra ek bir dijital bitcoin URL'si için önbellek sorununu çözebilirsiniz.

Dijital bitcoin URL'si

Önbelleğe alınamayan yeni bir dosya kaynağının kaldırılması, benzersiz bir adın varlığı için mümkündür. Örneğin, CSS dosyası "main.css" olarak adlandırılıyorsa, onu "main_1.css" olarak adlandırabiliriz. Bir dahaki sefere ismi değiştirirsek, dosyaya "main_2.css" ismini verebiliriz. Bu, periyodik olarak değiştirilen dosyalar için uygundur.

Para çekme işlemi doğru yapılırsa, üretkenliğe büyük bir artış sağlar, trafikten tasarruf sağlar ve sunucunun maliyetini değiştirir, para çekmenin zengin sitelerindeki yazılımlar çok uzaklara uygulanmaz, bu da bir yarış kampı yaratır, bu da ortaya çıkar. karşılıklı kaynakların senkronizasyonu.

Daha da önemlisi, iki modelden birine para yatırmanın en iyi uygulamalarıdır:

Model 1: sabit içerik ve uzun vadeli maksimum yaş önbelleği

Önbellek Kontrolü: maksimum yaş=31536000
  • URL'ye göre Vmist değiştirilmez, bu nedenle…
  • Bir tarayıcı veya CDN, bir kaynağı nehirde kolayca önbelleğe alabilir
  • Maksimum yaş görevleri için daha genç olan önbelleğe alınmış içerik, sunucuya danışılmadan saldırıya uğrayabilir

Storinka : Gay, "/script-v1.js", "/styles-v1.css" ve "/cats-v1.jpg" 10:24'e ihtiyacım var

Peşin : Bende boş var ne kadar iyisin Servere? 10:24

sunucu : Tamam, eksen kokuyor. Konuşmaya kadar, Kesh, їх varto vikoristati artık kaya germe. 10:25

Peşin : TEŞEKKÜR! 10:25

Storinka : Yaşasın! 10:25

gelecek gün

Storinka : Gay, sana ihtiyacım var "/script- v2.js" , "/styles- v2.css" ve "/cats-v1.jpg" 08:14

Peşin : Kedilerin olduğu resim, bunu çözemezsin. sunucu? 08:14

sunucu : Kolay - yeni CSS ve JS'nin ekseni. Bir kez daha, Kesh: Müktesebat terimi kaderden başka bir şey değildir. 08:15

Peşin : Süper! 08:15

Storinka : Teşekkür ederim! 08:15

Peşin : Hmm, "/script-v1.js" & "/styles-v1.css" dosyalarını uzun süredir kopyalamadım. Onları görmenin zamanı geldi. 12:32

Whiplash kalıbı, şarkı URL'sinin içeriğini hiçbir şekilde değiştirmezsiniz, URL'nin kendisini değiştirirsiniz:

Dış görünüm URL'si içerikten aynı anda değişebilme özelliğine sahiptir. Bir sürüm numarasına, değiştirilme tarihine veya karma içeriğe sahip olabilirsiniz (Blogum için bu seçeneği seçtim).

Çoğu sunucu taraflı çerçeve, benzer konuşmaları kolayca kullanmanıza izin veren araçlara sahiptir (Django'nun tuhaf Manifest Statik Dosyaları Deposu vardır); Node.js'de kendi görevlerinizi revize eden bazı küçük kütüphaneler de vardır, örneğin gulp-rev.

Ancak bu kalıp, makaleler ve blog gönderileri gibi konuşmalar için uygun değildir. URL'niz sürümlendirilemez, ancak bunun yerine değiştirilebilir. Cidden, sık sık birlikte İsveççe güncelleme yeteneği gerektiren dilbilgisi ve noktalama affına sahibim.

Model #2: Değiştirilen içerik sunucuda yeniden doğrulanmalıdır

Önbellek Kontrolü: önbellek yok
  • Vmіst URL değişikliği, bundan böyle…
  • İster yerel olarak önbelleğe alınmış bir sürüm olsun, sunucu girişi olmadan yenilmez.

Storinka : Gay, "/about/" ve "/sw.js"ye ihtiyacım var 11:32

Peşin : Yardım edebileceğim bir şey yok. sunucu? 11:32

sunucu : Evet evet. Kesh, onları yanında tut, ama zaferlerin önünde beni besle. 11:33

Peşin : Evet efendim! 11:33

Storinka : TEŞEKKÜR! 11:33

gelecek gün için

Storinka : Gay, "/about/" ve "/sw.js" ihtiyacımı yenileyeceğim 09:46

Peşin : Hvilinka. Sunucu, kopyalarımla her şey yolunda mı? "/about/" dosyasının bir kopyası Pazartesi'den ve "/sw.js" dünden. 09:46

sunucu : "/sw.js" değişmedi... 09:47

Peşin : Güzel. Storinka, "/sw.js" kırpın. 09:47

sunucu : ...ama "/about/" yeni bir sürümüm var. Kesh, trimay її, ale yak ve geçen sefer, benimle yatmayı unutma. 09:47

Peşin : mantıklı! 09:47

Storinka : Mucizevi! 09:47

Not: önbellek yok "önbelleğe alma" anlamına gelmez, sunucudan önbelleğe alınmış kaynağı "doğrulamak" (veya yeniden doğrulamak) anlamına gelir. Nakit çekmek yerine, tarayıcıyı mağaza yok ile cezalandırın. Ayrıca, yeniden doğrulama zorunluluğu, obov'yazkovu yeniden doğrulama anlamına gelmez, ancak kaynağı önbelleğe alanlar, yalnızca daha genç yaşta, daha düşük maksimum yaş görevlerinde ve yalnızca başka bir yeniden doğrulama türünde kazanır. Eksen, her şeyin önbellek için anahtar kelimelerle başlatıldığı şekildedir.

Bu model için çıktıya bir ETag (seçtiğiniz sürüm kimliği) veya Son Değiştirme başlığı ekleyebilirsiniz. Saldırıya uğradığında, istemci tarafı yerine If-None-Match veya If-Modified-Since görüntülenir ve sunucunun HTTP 304'ü açmak için "Sahip olduklarınızı uyandırın, önbelleğiniz güncel" demesine izin verir.

ETag / Last-Modified yeterince güçlü olmasa da sunucunun tekrar zorlanması gerekir.

Bu patern her zaman ölçü noktasına bakar, bu, ilk model gibi, merezhny zapitіv olmadan yapabilen böyle bir garni değildir.

İlk kalıp için yeterli altyapıya sahip değilsek, nadir değildir, ancak kalıp 2'deki kaynaklarla ilgili sorunları da çözebiliriz. Sonuç, ara sürümü kazanır: kısa maksimum yaş ve değişen içerik. Pis uzlaşma.

Değişen içerik için maksimum yaş listesi genellikle yanlış seçimdir

Ne yazık ki, uzantılar nedeniyle bir popo olarak Github sayfalarını ziyaret edebilirsiniz.

Göstermek:

  • /makale/
  • /styles.css
  • /script.js

Іz sunucu başlığı:

Önbellek Kontrolü: yeniden doğrulanmalıdır, maksimum yaş=600

  • Vmіst URL değişikliği
  • Tarayıcıda yeni sürüm 10 dakika önbelleğe alınsa da, sunucuya danışmadan kazanamaz
  • Böyle bir önbellek olmadığından, mümkünse If-Modified-Since veya If-None-Match ile minimuma alınabilir.

Storinka : Gay, "/article/", "/script.js" ve "/styles.css"e ihtiyacım var 10:21

Peşin : Senin gibi hiçbir şeyim yok, Sunucu? 10:21

sunucu : Sorun değil, kokuyor. Ama unutma, Kesh: En yakın 10 kırbacı bir esnemeyle yenebilirsin. 10:22

Peşin : Є! 10:22

Storinka : TEŞEKKÜR! 10:22

Storinka : Gay, tekrar "/article/", "/script.js" ve "/styles.css"e ihtiyacım olacak 10:28

Peşin : Hata, yazıyorum ama "/styles.css" yazdım, aksi halde є, trim'im var. Sunucu, bana "/styles.css" gönderir misin? 10:28

sunucu : Çok kolay, o saatten sonra çoktan değiştim, sanki bir süre önce yoga yapmışım gibi. Nayblizhchi 10 hvilin yogayı cesaretle kazanabilirsiniz. 10:29

Peşin : Sorun yok. 10:29

Storinka : Teşekkür ederim! Ale, bil bakalım ne oldu, yanlış gitti! Her şey bozuldu! Neler oluyor? 10:29

Bu patern test edilirken yaşama hakkına sahip olabilir, ancak gerçek bir projenin anlaması çok kolay. Uygulamada sunucu HTML, CSS ve JS'yi güncellemiş ancak sunucudan CSS güncellemeleri eklenene kadar önbellekten eski HTML ve JS ile yan tarafa eklenmiştir. Sürümlerin dağıtımı tamamen sözde.

Genellikle, HTML'de önemli değişiklikler yaparken, yeni yapının doğru görüntülenmesi için CSS'yi ve içeriği ve stilleri etkilememesi için JavaScript'i değiştiririz. Tüm kaynaklar bağımsızdır, ancak önbelleğin başlıklarının kullanımı kolay değildir. Sonuç olarak, orijinaller bir/iki kaynağın eski bir versiyonuna ve diğerlerinin eski bir versiyonuna sahip olabilir.

max-age her saat başı ayarlanır, böylece tüm kaynaklar aynı adresin parçası olarak aktarılır, terim bir kerede bölünür ve ardından küçük bir senkronizasyon şansı vardır. JavaScript veya diğer stilleri içermeyen sayfalarınız olduğu sürece, önbelleğe uygulanabilirlik koşulları senkronize olmayacaktır. Daha da kötüsü, tarayıcı HTML, CSS ve JS'nin karşılıklı olarak bağımlı olduğunu bilmeden sürekli önbelleğe giriyor, böylece listeden birinin sevincini kazanabilir ve diğer her şeyi unutabilirsiniz. Vrahovyuchi tüm faktörleri bir kerede, eşleşmeyen sürümlerin ortaya çıkma olasılığının harika olduğunu anlamaktan suçlusunuz.

Bir koristuvach için sonuç, yan ve diğer sorunların çatlamış bir düzeni olabilir. Küçük hatalardan alakasız içeriğe.

Tanrı aşkına, koristuvachi'nin boş bir tatili olabilir.

Diğer tarafın tarafını güncelleme

Taraf güncelleme yolu tarafından işgal edildiğinden, tarayıcılar her zaman maksimum yaşı göz ardı ederek sunucu yeniden doğrulaması yapmalıdır. Buna göre, maksimum yaştan sonra koristuvach yanlış olduğu için, basit bir yan güncelleme her şeyi düzeltebilir. Ale, zrozumilo, bundan sonra kaşık bulundukça kuşatma tamamen kaybolacak ve sitenize kurulum farklı olacaktır.

Service Worker bu hataların ömrüne devam edebilir

Örneğin, aşağıdaki hizmet çalışanınız var:

constversion="2"; self.addEventListener("install", event => ( event.waitUntil(caches.open(`static-$(version)`) )then(cache => cache.addAll([ "/styles.css", "/script) .js" ]))))); )); self.addEventListener("etkinleştir", event => ( // …eski önbellekleri sil… )); self.addEventListener("getir", event => ( event.respondWith(caches.match(event.request) .then(response => response || fetch(event.request))); ));

Cai servis çalışanı:

  • önbellek komut dosyası ve stilleri
  • zbіgu ne zaman nakit kazanmak, іnakshe zbіtаєє birleşmek için

CSS/JS'yi değiştirdikçe, güncellemeyi başlatan sürüm numarasını da değiştiririz. Ancak, addAll'ın parçaları önbelleğe geri döndü, bu nedenle maksimum yaş ve CSS ve JS'nin yanlış sürümleri arasında bir yarışa girebiliriz.

Koku önbelleğe alındığından, yaklaşan hizmet çalışanı güncellemesinden önce çılgın CSS ve JS'ye sahip olacağız - ve yarış güncellendiğinde tekrar kullanılamayacak.

Servis çalışanında önbelleği atlayabilirsiniz:

Self.addEventListener("install", event => ( event.waitUntil(caches.open(`static-$(version)`) )then(cache => cache.addAll([ new Request("/styles.css", (önbellek: "önbellek yok")), Yeni İstek ("/script.js", (önbellek: "önbellek yok"))))));));

Ne yazık ki, önbelleğe alma seçenekleri Chrome/Opera'da desteklenmez ve yalnızca Firefox'a eklenir, ancak bunu kendiniz yapabilirsiniz:

Self.addEventListener("install", event => ( event.waitUntil(caches.open(`static-$(version)`) )then(cache => Promise.all([ "/styles.css", "/script) .js" ].map(url => ( // rastgele bir sorgu dizesi kullanarak önbellek bozma döndürme fetch(`$(url)?$(Math.random())`).then(yanıt => ( // başarısız 404, 500 vb. üzerinde if (!response.ok) throw Error("Tamam değil");döndür cache.put(url, response);

Bu uygulama için, ek bir vap numarası için önbelleği atıyorum veya beş tane daha yapabilir ve bir saatlik depolama için içeriğe bir karma ekleyebilirsiniz (sw-precache çalanlara benzer). Bu, JavaScript yardımı için ilk kalıbın bir tür uygulamasıdır, ancak tarayıcılar ve CDN ile değil, yalnızca hizmet çalışanı ile çalışır.

Hizmet çalışanları ve HTTP önbelleği mucizevi bir şekilde birlikte çalışır, onlarla savaşmaktan çekinmeyin!

Bir bachite gibi, servis çalışanınızda para çekme için afları atlayabilir veya daha doğrusu sorunun kökünü bulabilirsiniz. Önbelleği doğru şekilde yapılandırmak yalnızca çalışanın robotunu kolaylaştırmakla kalmaz, aynı zamanda tarayıcıların servis çalışanlarını (Safari, IE/Edge) desteklememesine yardımcı olur ve ayrıca CDN'nizden en iyi şekilde yararlanmanızı sağlar.

Doğru önbellek başlıkları, hizmet çalışanı güncellemelerini önemli ölçüde hızlandırabilir.

constversion="23"; self.addEventListener("install", event => ( event.waitUntil(caches.open(`static-$(version)`) )then(cache => cache.addAll([ "/", "/script-f93bca2c) .js", "/styles-a837cb1e.css", "/cats-0e9a2ef4.jpg" ]))); ));

Burada, 2 numaralı kalıpla (sunucu yeniden doğrulama) kök sayfayı ve 1 numaralı kalıpla (değişmez içerik) diğer tüm kaynakları önbelleğe aldım. Servis çalışanına yapılan dış görünüm güncellemeleri kök tarafında istenecek ve URL'leri değişeceği için kaynaklardan yararlanılmayacaktır. Bunu iyi yapıyoruz, önceki sürümden veya hatta eski sürümden yükseltme yapıyor olsanız da, trafikten tasarruf sağlıyor ve üretkenliği artırıyoruz.

Burada, tam bir ikili dosyanın küçük bir değişiklikle başlatılması düşünülüyorsa veya iki dosyanın karmaşık bir şekilde eşleştirilmesiyle sonuçlanıyorsa, yerel uygulamaya göre önemli bir avantaj vardır. Böylece harika bir web programını eşit derecede küçük bir ilgiyle yükseltebiliriz.

Hizmet çalışanlarının polis memuru olarak değil, polis olarak çalışması daha olasıdır, bu nedenle onunla savaşmak için önbelleği kullanın.

Dikkatli bir maksimum yaş ve değişen içerik seçimi ile daha da iyi olabilir

max-age, değişen içerik için genellikle yanlış bir seçimdir, ama boşver. Örneğin, orijinal istatistik maksimum yaşı üç kalem olur. Yarış kampı bir sorun değil, çünkü aynı para çekme modelinin mevcut olduğu (CSS, JS ve görüntü fitilleme modeli #1 - sabit içerik) yanında hiçbir nadas olmadığı için, diğer her şey desteklenmez.

Bu kalıp, sakince popüler bir makale yazdığım ve CDN'm (Cloudflare) sunucudan trafik çekebileceği anlamına geliyor, bu nedenle, açıkçası, üç hediye göndermeye hazırlanıyorum, güncellenen makalenin rıhtımları erişilebilir hale gelecek. çekirdek.

Bu patern fanatizm olmadan muzaffer olmalıdır. Sanki tüzüğe yeni bir bölüm ekledim ve diğer tüzük için yeni bir bölüm koydum, virishuve etmem gerektiği için bir safsata yarattım. Koristuvach mesaja basabilir ve makalenin bir kopyasını bölünmeden alabilir. Bunu silmek istersem makaleyi güncelleyebilir, Cloudflare statının önbelleğe alma seçeneğini görebilir, üç kredi ekleyebilir ve başka bir stat için daha fazla güç ekleyebilirim. Bu nedenle, bu model dikkatli olmayı gerektirecektir.

Doğru önbellek seçimi ile verimlilikte önemli bir azalma ve trafik tasarrufu sağlar. URL'yi kolayca değiştirebilmeniz veya sunucu tarafı yeniden doğrulamasını etiketleyebilmeniz için değişmez içeriği iletin. Maksimum yaşı değiştirin ve içeriği değiştirin, böylece içeriğinizin çok eski olmadığına ikna olabilirsiniz, böylece senkronizasyondan çıkabilir.

© 2022 androidas.ru - Android hakkında her şey