Məzmuna keçin

Odoo üçün səhifə keşi: RAM və ya fayldan təqdim olunan mağaza və bloq — ziyarətçilər, axtarış sistemləri və süni intellekt üçün sürətli

Açıq mənbəli website_page_cache modulu ictimai Odoo səhifələrini demək olar ki, statik şəkildə təqdim edir, dəyişikliklər və tərcümələr zamanı aktuallığını qoruyur, idarəetmə panelində RAM-a ehtiyac olub-olmadığını və nə qədər lazım olduğunu göstərir
10 noyabr 2026 tərəfindən
Odoo üçün səhifə keşi: RAM və ya fayldan təqdim olunan mağaza və bloq — ziyarətçilər, axtarış sistemləri və süni intellekt üçün sürətli

10 noyabr 2026  |  Öz hazırladığımız həll  |  Odoo, performans və axtarış sistemləri

Odoo saytları üçün səhifə keşi: açıq mağaza və bloq səhifələrinin hər sorğuda yenidən yaradılması əvəzinə fayldan və ya RAM-dan təqdim edilməsi

Odoo saytı hər müraciətdə səhifəni yenidən yaradır: verilənlər bazasına sorğular göndərilir, şablonlar, tərcümələr və qiymətlər işlənir. Tək bir ziyarətçi üçün bu, hiss olunmur. Amma axtarış sistemləri və süni intellekt indeksləyiciləri çoxlu dildə yüzlərlə və ya minlərlə səhifəyə müraciət etdikdə davamlı yük yaranır və real müştərilər də gözləməli olur. Bunun üçün Odoo 19-a uyğun website_page_cache modulunu hazırlayıb GitHub-da açıq mənbəli proqram (LGPL-3) kimi yayımlamışıq: anonim ziyarətçilərin müraciət etdiyi mağaza və bloq səhifələri keşdən, demək olar ki, statik şəkildə — fayllardan və ya operativ yaddaşdan (RAM) təqdim edilir. Hər dəyişiklik, o cümlədən tərcümədəki dəyişiklik də təsirlənən səhifələri avtomatik olaraq keşdən silir.

Axtarışda tapılmaq istəyən hər kəs üçün vacib məqam: modul heç bir axtarış sistemini və ya süni intellekt tarayıcısını bloklamır. Bütün indeksləyicilər hər bir ziyarətçi ilə eyni məzmunu alır, sadəcə daha sürətli. Bu yazıda keşin necə işlədiyi, idarəetmə panelinin görünüşü (ekran görüntüləri ilə), səhifələrinizin operativ yaddaşa sığıb-sığmadığını və əlavə nə qədər RAM lazım olduğunu necə müəyyənləşdirmək, tətbiq olunan təhlükəsizlik qaydaları və modulun quraşdırılması izah edilir.

Qısa xülasə

MövzuNə keçərlidir
ModulOdoo 19 üçün website_page_cache, LGPL-3 lisenziyası, GitHub-da açıq şəkildə əlçatandır
Keşdə nə saxlanılır?Hər saytın bütün dillərdəki açıq mağaza və bloq səhifələri (siyahılar, kateqoriyalar, məhsullar, yazılar)
Kimlər üçün?Yalnız anonim ziyarətçilər üçün, yalnız sorğu parametrləri olmayan GET sorğuları, yalnız 200 statuslu HTML cavabları
Saxlama yeriDiskdəki fayllar və ya RAM (bütün işçi proseslərin paylaşdığı tmpfs); tələb olunan yerə görə avtomatik seçim
AktuallıqHər dəyişiklik (o cümlədən tərcümələr, idxal əməliyyatları, skriptlər) verilənlər bazası triggerləri vasitəsilə jurnalda qeyd yaradır və təsirlənən səhifələri etibarsız edir
İdarəetmə paneliParametrlər, vəziyyət, statistika (keşdə tapılan və tapılmayan sorğular, qənaət edilən server vaxtı) və “əlavə tələb olunan RAM” məlumatı ilə birlikdə “Operativ yaddaşa sığırmı?” yoxlaması
Axtarış sistemləri və süni intellektHeç nə bloklanmır və sürət məhdudlaşdırılmır; hamıya eyni səhifələr, sadəcə daha sürətli təqdim edilir
Təcili dayandırmaBir keçid (enabled = 0) bütün işçi proseslərdə keşi 30 saniyə ərzində söndürür

Problem: Odoo saytlarında tarayıcıların yaratdığı yük

Odoo tam funksional ERP sistemidir, sayt isə onun çoxsaylı modullarından biridir. Ziyarətçinin və ya botun müraciət etdiyi hər səhifə eyni mərhələlərdən keçir: sorğunun emalı, verilənlər bazasına müraciət, məhsul və qiymət məlumatlarının yüklənməsi, QWeb şablonunun render edilməsi, tərcümələrin yerləşdirilməsi və nəticənin təqdim olunması. Səhifədən asılı olaraq bu, bir neçə yüz millisaniyə çəkir və həmin müddətdə azsaylı işçi proseslərdən birini məşğul edir.

Axtarış sistemləri və süni intellekt indeksləyiciləri ilə bağlı bu problem daim yaranır:

  • Çox dil, çox ünvan: 46 dildə mövcud olan bir səhifə tarayıcı üçün 46 fərqli ünvan deməkdir.
  • Hər ünvan ayrıca sorğulanır, çox vaxt çoxsaylı paylanmış göndəricilər tərəfindən eyni vaxtda. Klassik brauzer keşi burada kömək etmir, çünki hər sorğu yeni ünvana aiddir.
  • Az sayda işçi proses: Odoo xidməti adətən cəmi bir neçə proseslə işləyir. Onlar tarayıcı sorğuları ilə məşğul olduqda real ziyarətçilər növbədə gözləyir.
  • Eyni məzmun hər dəfə yenidən yaradılır: Bloq yazısı nadir hallarda dəyişir, amma hər müraciətdə onun yenidən hazırlanmasına xeyli resurs sərf olunur.

İlk ağıla gələn çıxış yolu — tarayıcıları bloklamaq — axtarışda tapılmaq istəyən şirkət üçün uyğun seçim deyil. Axtarış sistemlərində və süni intellekt cavablarında görünmək dəyərlidir. Daha yaxşı həll səhifələri o qədər sürətlə təqdim etməkdir ki, yaranan yük demək olar ki, hiss olunmasın. Səhifə keşi məhz bunu edir.

Səhifə keşi belə işləyir

Modul Odoo-nun sorğuları qəbul edən hissəsinə (ir.http) qoşulur. Hər səhifə sorğusunda millisaniyənin kiçik bir hissəsi ərzində səhifənin keşdən təqdim edilə bilib-bilməyəcəyini müəyyənləşdirir və uyğun olduqda onu verilənlər bazasına, şablona və render prosesinə müraciət etmədən təqdim edir.

Proses diaqramı: sorğu, yoxlama, keş açarı, keşdə tapılma və ya tapılmama, saxlama və təqdimetmə

  1. Yoxlama: Yalnız icazə verilən yola (mağaza, kateqoriyalar, məhsullar, bloq) göndərilən, sorğu parametrləri olmayan anonim GET sorğusu uyğun sayılır. Qalan bütün sorğular həmişəki kimi Odoo tərəfindən emal olunur.
  2. Keş açarı: o, veb-saytdan, host sinfindən, dildən, yoldan, qiymət siyahısından, vergi mövqeyindən və kuki razılığı vəziyyətindən ibarətdir. Buna görə fərqli şey görəcək ziyarətçilər heç vaxt bir qeydi bölüşmür. Host bu zaman normallaşdırılır: Odoo mütləq ünvanları həmişə sorğudan deyil, veb-saytın domenindən yazır; sorğu ünvanı yalnız səhifənin əsas ünvan sayılıb-sayılmayacağını (dil istinadları) və indekslənib-indekslənməyəcəyini müəyyən edir. Buna görə bütün yad host adları hər biri üçün ayrıca surət yaratmaq əvəzinə, noindex qeydi ilə birlikdə bir qeydi bölüşür.
  3. Keşdə tapıldıqda: Aktual qeyd varsa, təqdim edilir. Bu zaman səhifədəki CSRF tokeni hər sorğu üçün yenidən təyin olunur. Bloq yazılarına baxışların sayılması davam edir.
  4. Keşdə tapılmadıqda: Qeyd yoxdursa və ya köhnəlibsə, Odoo səhifəni həmişəki kimi render edir. Nəticə keşdə saxlanmağa uyğundursa (200 statusu, HTML, kuki təyin edilmir, mətndə sessiya identifikatoru yoxdur), saxlanılır; növbəti sorğuda keşdən tapılır.
  5. Başlıqda görünür: Hər cavabda X-Page-Cache: HIT və ya MISS başlığı olur. Beləliklə, nə baş verdiyini istənilən alətlə yoxlamaq mümkündür.

Nə qədər daha sürətlidir?

Test sistemimizdə (saytlarımızın surəti, bir neçə yüz səhifə) bir səhifənin orta render müddəti təxminən 490 millisaniyə, keşdən təqdim olunma müddəti isə təxminən 23 millisaniyə idi: təxminən iyirmi dəfə daha sürətli. Səhifə nə qədər mürəkkəbdirsə, qazanc da bir o qədər böyükdür. İdarəetmə paneli bu iki göstərici əsasında server vaxtına təxmini qənaəti də hesablayır.

Fayl və ya RAM: saxlama yerinin seçilməsi

Keş iki saxlama yerini dəstəkləyir. Hər ikisi bütün Odoo işçi prosesləri üçün ortaqdır, yəni hər səhifə hər proses üçün ayrıca deyil, yalnız bir dəfə saxlanılır.

Fayl keşi ilə RAM keşinin müqayisəsi və avtomatik seçim qaydası

ParametrSəhifələr harada saxlanılır?Xüsusiyyətlər
FayllarOdoo-nun məlumat qovluğunda hər verilənlər bazası üçün ayrıca qovluqyenidən başladıldıqda saxlanılır; əməliyyat sistemi tez-tez istifadə olunan səhifələri onsuz da yaddaşda saxlayır
Operativ yaddaş/dev/shm altında tmpfsən sürətli təqdimetmə; server yenidən başladıldıqda silinir və asanlıqla yenidən yaradılır
Avtomatikhamısı sığdığı müddətdə RAM, əks halda fayllarTexniki xidmət tapşırığı (hər 10 dəqiqədən bir) təxmini hesablamaya əsasən qərar verir; seçimin davamlı dəyişməməsi üçün “sığır” və “güclə sığır” nəticələrində RAM-da qalır

Əksər quraşdırmalar üçün Avtomatik düzgün seçimdir: kifayət qədər yer olduqda RAM sürətindən faydalanırsınız, əks halda isə müdaxilə tələb olunmadan fayllara keçilir.

Sayt operativ yaddaşa sığırmı? Nə qədər RAM çatışmır?

RAM keşindən istifadənin mümkün olub-olmaması üç amildən asılıdır: səhifələrin sayı, onların orta ölçüsü və mövcud yaddaş. İdarəetmə paneli bunları sizin üçün hesablayır:

  • Səhifə sayı: Hər sayt üzrə yayımlanmış məhsullar, mağaza siyahısı səhifələri, kateqoriyalar, bloq yazıları və bloq siyahıları sayılır, sonra dillərin sayına vurulur.
  • Səhifə ölçüsü: Keşdə səhifələr yaranan kimi onların faktiki orta ölçüsü hesablanır; o vaxta qədər təxmini dəyərdən istifadə olunur.
  • Keş üçün yer: təyin edilmiş RAM limitinin, tmpfs ölçüsünün və mövcud operativ yaddaşın yarısının ən kiçik dəyəri. Keş heç vaxt serverdə yaddaş çatışmazlığı yaratmamalıdır.
  • Nəticə: “sığır və ehtiyat yer qalır”, “güclə sığır”, “həddindən artıq böyükdür” və ya “RAM keşi əlçatan deyil”. Tələb olunan həcm mövcud yerin ən çox 80 faizini təşkil etdikdə “sığır” hesab olunur.

İdarəetmə panelinin “Operativ yaddaşa sığırmı?” bölməsi: hər sayt üzrə səhifə sayı, tələb olunan yer və əlavə lazım olan RAM haqqında məlumat

Yeni: nə qədər əlavə RAM lazımdır?

Keş yaddaşa sığmadıqda nəyi dəyişmək lazım olduğunu bilmək istəyirsiniz. Buna görə idarəetmə paneli nəticənin altında konkret sətir göstərir: “RAM keşi üçün əlavə RAM: bu serverdə təxminən … əlavə operativ yaddaş”; yer artıq kifayətdirsə, “tələb olunmur” yazılır. Məhdudiyyət serverdə deyil, parametrlərdən birindədirsə, aşağıda hansı parametrin artırılmalı olduğu göstərilir: modulun RAM limiti və ya tmpfs ölçüsü (/dev/shm).

RAM limiti çox aşağı olan idarəetmə paneli: “Xeyr” nəticəsi və RAM limitini ən azı tələb olunan həcmə qədər artırmaq göstərişi

Hesablama sadə və aydındır:

Hesablama nümunəsi: 12 000 səhifə × 25 KB təxminən 300 MB ehtiyac verir, ehtiyatla təxminən 375 MB, bunun üçün ən azı 750 MB boş yaddaş lazımdır

  1. Tələb olunan həcm = səhifə sayı × səhifənin orta ölçüsü.
  2. Ehtiyatla birlikdə = tələb olunan həcm bölünsün 0,8. Nəticənin “sığır” olması üçün bu dəyər həm RAM limitinə, həm də tmpfs ölçüsünə sığmalıdır.
  3. Boş yaddaş: Keş mövcud operativ yaddaşın ən çox yarısından istifadə edə bildiyi üçün serverdə 2-ci addımda alınan dəyərin ən azı iki misli qədər sərbəst yaddaş olmalıdır. Çatışmazlıq varsa, fərq əlavə tələb olunan RAM həcmidir.

Şəkildəki nümunə (hər biri 25 KB olan 12 000 səhifə) hesablama köməkçisidir, səhifələrimizin ölçməsi deyil. Kiçik veb-saytlar üçün bir neçə on meqabayt kifayət edir; ekran görüntülərindəki nümunə məlumatlar təxminən 13 MB ilə kifayətləndi.

Nəzərə alınmalı vacib məqam: hesablamada əlavə qiymət siyahısı və ya ölkə versiyaları sayılmır. Bunlardan çox istifadə edirsinizsə, bir qədər ehtiyat yer ayırın. Həmçinin avtomatik rejimin fayllarda qalmasının ən geniş yayılmış səbəbi operativ yaddaş çatışmazlığı deyil, RAM limitinin çox aşağı olmasıdır. Belə halda idarəetmə paneli məhz həmin sətri göstərir.

Dəyişikliklər və tərcümələr keşi təmizləyir

Keş yalnız heç vaxt köhnəlmiş səhifələr təqdim etmədikdə yararlıdır. Təkcə vaxt məhdudiyyəti (“hər on iki saatdan bir sil”) kifayət qədər dəqiq olmazdı: dəyişdirilmiş qiymətin və ya düzəldilmiş yazı səhvinin görünməsi on iki saata qədər gecikə bilərdi. Buna görə modul məzmuna əsasən işləyir.

Keşin etibarsızlaşdırılması prosesi: dəyişiklik, verilənlər bazası triggeri, dəyişiklik jurnalı, tutuşdurma, səhifənin silinməsi, növbəti müraciətdə yenidən render edilməsi

  1. Verilənlər bazası triggerləri: Səhifəyə təsir edə bilən bütün cədvəllərdə (məhsullar, variantlar, şəkillər, anbar qalığı, atributlar, kateqoriyalar, qiymətlər, vergilər, qiymət siyahıları, bloq yazıları və etiketlər, tərəfdaş və şirkət məlumatları, görünüşlər, resurslar, menyular, dillər, sayt parametrləri) PostgreSQL triggerləri yerləşdirilir. Onlar hər dəyişikliyi dəyişiklik jurnalına yazır.
  2. Asılılıqlar və verilənlər bazasının vəziyyəti: Keşdəki hər səhifə hansı qeydləri göstərdiyini və yaradıldığı andakı verilənlər bazasının vəziyyətini yadda saxlayır.
  3. Tutuşdurma: Həmin vəziyyətdən sonra yaranmış və bu qeydlərdən birinə aid jurnal qeydi varsa, səhifə köhnəlmiş sayılır.
  4. Yenidən keşə yazma: Növbəti müraciətdə köhnəlmiş səhifə silinir, yenidən render edilir və saxlanılır.

Tərcümələr də nəzərə alınır

Odoo 19 tərcümə edilmiş mətnləri orijinal mətnlə eyni qeyddə (JSON sahəsi kimi) saxlayır. Buna görə tərcümənin dəyişdirilməsi verilənlər bazası üçün adi bir sətir dəyişikliyidir və trigger bunu görür. Bu, həm interfeys vasitəsilə redaktəyə, həm idxala, həm inteqrasiya interfeyslərinə, həm də birbaşa verilənlər bazasına yazan skriptlərə aiddir. Beləliklə, 46 dilə avtomatik tərcümə yalnız mətni dəyişmiş səhifələri etibarsız edir, qalanlarına toxunmur.

  • Ümumi deyil, hədəfli təsir: Məhsulda dəyişiklik onun səhifələrini, daxil olduğu siyahıları və aid olduğu kateqoriyanı etibarsız edir. Qalanları keşdə qalır.
  • Qlobal dəyişikliklər (şablonlar, resurslar, dillər, menyular, vergilər, valyutalar) bütün səhifələri bir anda etibarsız edir, çünki hər səhifəyə təsir göstərə bilər.
  • Sayğaclar istisnadır: Bloq yazılarının baxış sayğacı hər ziyarətdə dəyişir; bu dəyişiklik qəsdən keşi etibarsız etmir, əks halda populyar yazılarda keş faydasız olardı.
  • Əlavə təminat: Hər səhifə üçün maksimum saxlanma müddəti də var (standart olaraq 12 saat).
  • Keş yazma xətasına səbəb olmur: Trigger daxilindəki xəta xəbərdarlıq kimi jurnala yazılır və əsas saxlama əməliyyatının uğursuz olmasına səbəb olmur.

İdarəetmə paneli və statistika

İstismar üçün lazım olan hər şey bir yerdədir: Odoo-da Vebsayt → Hesabatlar → Səhifə keşi bölməsində. İcmal bölməsi idarəetmə panelidir (parametrlərlə birlikdə), Tarixçə bölməsi isə hər gün və sayt üzrə göstəriciləri göstərir.

Odoo-da səhifə keşinin idarəetmə paneli: parametrlər, vəziyyət, statistika və “Operativ yaddaşa sığırmı?” yoxlaması

Saytlarımızın surətləri olan test sistemindən ekran görüntüsü; sayt adları şərti adlarla əvəz edilib.

Parametrlər

Parametrİzah
AktivƏsas keçid. Söndürüldükdə Odoo bütün proseslərdə ən geci 30 saniyə ərzində hər səhifəni əvvəlki qaydada təqdim etməyə qayıdır.
Saxlama yeriAvtomatik, fayllar və ya operativ yaddaş
Maksimum saxlanma müddəti (saat)Əlavə təminat; dəyişikliklərdən asılı olmayaraq səhifələr bu müddət keçdikdən sonra yenilənir
RAM limiti (MB)RAM keşi ən çox bu qədər operativ yaddaş tuta bilər; bu, həm də “sığır” nəticəsi üçün həddir
Disk limiti (MB)Fayl keşinin maksimum ölçüsü; əvvəlcə ən köhnə qeydlər silinir

Vəziyyət və statistika

Vəziyyət bölməsi aktiv saxlama yerini və onun limitini, keşdəki səhifələrin sayını və ölçüsünü, həmçinin dəyişikliklərin izlənməsini göstərir: son 24 saatda neçə dəyişiklik qeydə alınıb və neçə cədvəl izlənir. İzləmə çatışmazlığı varsa, idarəetmə paneli aydın xəbərdarlıq göstərir, çünki belə halda keşə etibar etmək olmaz. Yuxarıdakı düymələr texniki xidməti dərhal işə salmağa, keşi təmizləməyə və ya triggerləri yoxlayıb lazım gəldikdə yenidən yaratmağa imkan verir.

Statistika (Bu gün, 7 gün, 30 gün) aşağıdakıları əhatə edir:

  • Keşdən və Render edilib: keşdə tapılan və tapılmayan sorğular, bunlar əsasında hesablanan keşdə tapılma faizi
  • Silinib (dəyişib/müddəti bitib): dəyişiklik və ya müddətin bitməsi səbəbindən neçə səhifənin silindiyi
  • Render müddəti və keş müddəti: hər səhifə üzrə orta göstəricilərin müqayisəsi
  • Server vaxtına təxmini qənaət və keşdən təqdim edilən məlumat həcmi

Hər işçi proses göstəriciləri ayrıca toplayır və dəqiqədə bir dəfə yazır; 90 gündən köhnə sətirlər texniki xidmət tapşırığı tərəfindən silinir.

Tarixçənin diaqram, pivot cədvəli və siyahı şəklində göstərilməsi

Tarixçə bölməsində hər sayt üzrə gündəlik göstəricilər diaqram, pivot cədvəli və ya siyahı şəklində mövcuddur. Beləliklə, yenidən başladılmadan və ya böyük dəyişiklikdən sonra keşdə tapılma faizinin yenidən artıb-artmadığını və hansı saytın ən çox sorğusunun keşdən qarşılandığını görə bilərsiniz.

Hər sayt üzrə keşdə tapılan və tapılmayan sorğuların, eləcə də silinmiş səhifələrin göstərildiyi pivot cədvəli şəklində səhifə keşi tarixçəsi

Təhlükəsizlik: keşdən heç vaxt təqdim edilməyənlər

Səhifə keşi heç vaxt bir şəxsin başqasına aid məzmunu görməsinə səbəb olmamalıdır. Buna görə modul bu prinsipə əsaslanır: Şübhə varsa, keşdə saxlama.

  • Yalnız anonim ziyarətçilər: Hesabına daxil olmuş, səbəti olan və ya sessiyasında başqa vəziyyət məlumatı olan istifadəçiyə həmişə adi qaydada render edilmiş səhifə təqdim olunur.
  • Yalnız sorğu parametrləri olmayan GET: Axtarışlar, filtrlər, sıralamalar, formalar, səbət və sifarişin rəsmiləşdirilməsi olduğu kimi işləyir.
  • Yalnız 200 statusu və HTML: Xəta səhifələri, yönləndirmələr və fayllar saxlanılmır.
  • Keşdə sessiya identifikatorları yoxdur: Sessiya identifikatoru olan və ya kuki təyin edən səhifə saxlanılmır (və bu hal xəbərdarlıq kimi jurnala yazılır).
  • Hər sorğu üçün CSRF tokeni: Keşdəki səhifədə tokenin yerində əvəzedici işarə olur və səhifə hər təqdim ediləndə yeni token yerləşdirilir.
  • Dəqiq açar: Sayt, dil, qiymət siyahısı, vergi mövqeyi və kukilərə razılıq keş açarına daxildir; fərqli məzmun görməli olan istifadəçiyə fərqli qeyd təqdim edilir.
  • Bir neçə verilənlər bazası: Hər verilənlər bazasının öz qeydləri, jurnalı və statistikası var.
  • Məlumat sızması yoxdur: Keş serverdə lokal olaraq saxlanılır (faylda və ya RAM-da). Üçüncü tərəflərə heç bir məlumat ötürülmür.

Axtarış sistemləri və süni intellekt indeksləyiciləri: heç nə bloklanmır

Bəzi sayt sahibləri tarayıcıların yaratdığı yükə bloklamalarla cavab verir. Bu, serveri qoruyur, amma axtarışda görünməni azaldır. Modul isə əks yolu seçir:

  • Hamı üçün eyni məzmun: Axtarış sistemləri, süni intellekt indeksləyiciləri və ziyarətçilər eyni səhifəni alır. Xüsusi “tarayıcı versiyası” və brauzer identifikatoruna əsasən tanıma yoxdur.
  • Daha sürətli cavablar indeksləməyə kömək edir: 500 əvəzinə 20 millisaniyədə cavab verən səhifə tarama büdcəsini daha az sərf edir və tarayıcılar eyni müddətdə daha çox səhifəni nəzərdən keçirə bilir.
  • Aktual məzmun: Dəyişikliklər səhifələri dərhal etibarsız etdiyindən tarayıcılar heç vaxt köhnəlmiş versiyanı görmür — axtarış və süni intellekt cavabları üçün məzmun hazırlayarkən bu, vacibdir.
  • Strukturlaşdırılmış məlumatlar qorunur: JSON-LD, meta məlumatlar və hreflang istinadları keşdəki səhifənin bir hissəsidir; keş sayt xəritələrinə və fayllara toxunmur.

Yükü əlavə olaraq məhdudlaşdırmaq istəyirsinizsə, bu, şüurlu şəkildə verə biləcəyiniz ayrıca qərardır — modul sizi buna məcbur etmir.

HTML-in minimallaşdırılması və sıxılmış təqdimatı

Keş yalnız hesablama vaxtına deyil, həm də məlumat həcminə qənaət edir. Modul HTML-i saxlamazdan əvvəl minimallaşdırır və brauzer və ya krouler dəstəkləyəndə sıxılmış şəkildə təqdim edir:

  • Minimallaşdırma (parametr website_page_cache.minify): HTML şərhləri düşür, boşluqlar birləşdirilir. Tam silinmə yalnız brauzerin onsuz da nəzərə almadığı yerlərdə, məsələn blok elementləri arasında baş verir. Sətir daxili elementlər arasındakı məsafələr qalır, pre, textarea və skriptlər dəyişməz qalır, strukturlaşdırılmış məlumatlar (JSON-LD) yığcam şəkildə yenidən yazılır. Səhifədən asılı olaraq səhifələr 10-30 % kiçilir. Yeddi real səhifə ilə sınaqda mətn, element sayı, bütün elementlərin mövqeyi və ekran görüntüsü orijinalla eyni idi. İlk təqdimat (MISS) sonrakı hər təqdimat (HIT) kimi minimallaşdırılmışdır.
  • Sıxma (parametr website_page_cache.compress): keşdən gələn səhifələr gzip ilə göndərilir (Content-Encoding: gzip, Vary: Accept-Encoding). Böyük aktiv paketlərini (CSS və JavaScript, bir neçə MB-a qədər) Odoo özü sıxılmamış təqdim edir; modul onları bir dəfə sıxır, surəti diskdə saxlayır və sonra birbaşa təqdim edir. Beləliklə, 2,1 MB CSS 0,27 MB, 4,8 MB JavaScript isə 1,1 MB oldu. Köhnə surətləri xidmət tapşırığı təmizləyir. Vebsaytın tərcümə faylı da (/website/translations, alman dili üçün təxminən 600 KB, hər ilk ziyarətdə tələb olunur) sıxılmış şəkildə, təxminən 145 KB həcmində göndərilir. O, keşlənmir, çünki ünvanında çox vaxt heş olmur və keşlənmiş nüsxə dəyişdirilmiş tərcümədən sonra da qala bilər.
  • Kompüterin yenidən başladılmasından sonra: RAM keşi Odoo-nun yenidən başladılması zamanı qorunur, lakin serverin yenidən başladılması zamanı qorunmur. Ona görə xidmət tapşırığı onu mərhələli şəkildə diskə əks etdirir (parametr website_page_cache.persist) və başlanğıcda bərpa edir. Bərpa olunmuş qeydin hələ də etibarlı olub-olmadığını həmişəki mexanizm yoxlayır: yaş və dəyişiklik jurnalı. Minimallaşdırma bu zaman yenidən hesablanmır.

Quraşdırma və parametrlər

  1. Modulu əldə edin: Mənbə kodunu GitHub-dan endirib Odoo 19 quraşdırmanızın əlavə modul yollarından birinə yerləşdirin: github.com/Alex0176/odoo-website-page-cache
  2. Quraşdırın: odoo-bin -d <Datenbank> -i website_page_cache --stop-after-init. Bu zaman dəyişiklik jurnalı, triggerlər və texniki xidmət tapşırığı (hər 10 dəqiqədən bir) yaradılır.
  3. Bütün işçi proseslərin modulu yükləməsi üçün xidməti yenidən başladın.
  4. İdarəetmə panelini açın: Vebsayt → Hesabatlar → Səhifə keşi. Dəyişikliklərin izlənməsinin tam olub-olmadığını yoxlayın və saxlama yerini seçin (standart seçim: avtomatik).
  5. Yoxlayın: Mağaza və ya bloq səhifəsinə iki dəfə müraciət edib X-Page-Cache başlığına baxın: ilk dəfə MISS, sonra HIT olmalıdır.

Parametrlər sistem parametrləri kimi saxlanılır (website_page_cache.enabled, .backend, .ttl_hours, .max_mb_file, .max_mb_ram) və adətən idarəetmə panelindən tənzimlənir. Modul alman dilinə tərcümə olunub. Modulun silinməsi triggerləri, jurnalı və keşlənmiş bütün səhifələri tamamilə aradan qaldırır.

RAM keşi üçün məsləhət: idarəetmə panelindəki RAM limiti və tmpfs ölçüsü (/dev/shm, qoşulma seçimi size=) tələbata uyğun olmalıdır. “Operativ yaddaşa sığırmı?” yoxlaması hər ikisi üçün konkret dəyərlər göstərir.

Bilməli olduğunuz məhdudiyyətlər

  • Dəyişikliklərdən sonra qısa gecikmə: Dəyişiklik jurnalının indeksi hər iki saniyədən bir yenilənir. Bu müddət ərzində dəyişdirilmiş səhifənin əvvəlki versiyası təqdim oluna bilər.
  • Anbar qalığından asılı mətnlər ehtiyat miqdarı dəyişdikdə və maksimum saxlanma müddəti bitdikdə yenilənir.
  • Yaddaş tələbatının təxmini hesablanması: Hər qiymət siyahısı və ya ölkə üçün əlavə versiyalar nəzərə alınmır; bir qədər ehtiyat yer ayırın.
  • Hər şeyi əvəz etmir: Keş xidmət göstərməsinə icazə verilən sorğuların yaratdığı yükü azaldır. Hesabına daxil olmuş istifadəçilərin sorğuları, axtarışlar və formalar yenə Odoo vasitəsilə emal olunur.
  • İlk sorğu yenə yavaş olur: Server yenidən başladıldıqdan (RAM istifadə edildikdə) və ya ümumi dəyişiklikdən sonra hər səhifə keşə yerləşdirilməzdən əvvəl bir dəfə adi qaydada yaradılır.

Tez-tez verilən suallar

Odoo üçün səhifə keşi nədir?

Açıq mənbəli moduldur (website_page_cache, Odoo 19, LGPL-3). İctimai mağaza və bloq səhifələrini hər müraciətdə yenidən yaratmaq əvəzinə, anonim ziyarətçilərə keşdən təqdim edir. Keş seçimdən asılı olaraq fayllarda və ya operativ yaddaşda saxlanılır.

Modul axtarış sistemlərini və ya süni intellekt skanerlərini bloklayırmı?

Xeyr. Axtarış sistemləri və süni intellekt indeksləyiciləri digər ziyarətçilərlə eyni səhifələri alır, sadəcə daha sürətli. Bloklama, sürət məhdudiyyəti və ya skanerlər üçün ayrıca versiya yoxdur.

Dəyişdirilmiş səhifələr və tərcümələr avtomatik olaraq yenidən keşlənirmi?

Bəli. PostgreSQL triggerləri müvafiq cədvəllərdəki hər dəyişikliyi jurnala bildirir; təsirlənən səhifələr keşdən çıxarılır, növbəti müraciətdə yenidən yaradılıb saxlanılır. Tərcümələr də əhatə olunur, çünki Odoo 19 onları eyni verilənlər qeydində saxlayır.

Fayl, yoxsa RAM seçməliyəm?

Adətən Avtomatik: bütün səhifələr RAM-a sığdıqca modul RAM-dan istifadə edir, əks halda fayllara keçir. Keşin yenidən başlatmalardan sonra da qalması lazımdırsa və ya RAM azdırsa, fayllar uyğundur; RAM isə ən sürətli variantdır.

Veb-saytımın operativ yaddaşa sığıb-sığmadığını necə öyrənə bilərəm?

İdarəetmə panelində Veb-sayt → Hesabatlar → Səhifə keşi bölməsində. “Operativ yaddaşa sığırmı?” bölməsi hər veb-sayt və dil üzrə səhifələri sayır, səhifə ölçüsünü ölçür və tələbatı RAM limiti, tmpfs ölçüsü və mövcud boş yaddaşla müqayisə edir.

RAM keşi üçün nə qədər əlavə RAM lazımdır?

İdarəetmə paneli bunu ayrıca sətirdə göstərir. Hesablama belədir: tələbat = səhifə sayı × səhifə ölçüsü; təhlükəsizlik ehtiyatı üçün nəticə 0,8-ə bölünür. Keş mövcud boş yaddaşın ən çox yarısından istifadə edə bildiyinə görə, lazım olan boş yaddaş bu nəticənin iki mislidir; çatışmayan hissə əlavə RAM tələbatıdır. Yalnız RAM limiti və ya tmpfs ölçüsü azdırsa, idarəetmə paneli müvafiq parametri və onun tələb olunan dəyərini göstərir.

Keş kiməsə başqa birinə aid məzmun göstərə bilərmi?

Xeyr. Yalnız axtarış parametrləri olmayan anonim GET sorğuları keşlənir. Hesabına daxil olmuş istifadəçilərə aid məzmun, alış-veriş səbətləri, formalar və axtarışlar heç vaxt keşdən təqdim edilmir; dil, qiymət siyahısı, vergi mövqeyi və kukilərə razılıq keş açarının tərkib hissəsidir.

Təcili halda keşi necə söndürə bilərəm?

İdarəetmə panelində “Aktiv” keçidini söndürün və ya website_page_cache.enabled sistem parametrini 0 edin. Dəyişiklik ən gec 30 saniyə ərzində bütün işçi proseslərdə qüvvəyə minir. Modulun silinməsi triggerləri, jurnalı və keşlənmiş səhifələri də aradan qaldırır.

Səhifənin keşdən təqdim olunduğunu necə bilə bilərəm?

X-Page-Cache cavab başlığına baxın: HIT keşdən təqdim edildiyini, MISS isə yenicə yaradılıb saxlanıldığını bildirir.

Modul HTML-i kiçildirmi və sıxırmı?

Bəli. Keşlənmiş səhifələr mühafizəkar şəkildə minimallaşdırılır (şərhlər və artıq boşluqlar düşür, məzmun və görünüş eyni qalır) və keş uğurlarında gzip ilə təqdim olunur; aktiv paketləri bir dəfə sıxılır və diskdən təqdim edilir. Hər ikisini website_page_cache.minify və website_page_cache.compress parametrləri ilə söndürmək olar.

Biricon IT Services dəstəyi

Skanerlərin yaratdığı yük altında Odoo veb-saytınız ləng işləyir, yaxud mağazanızı və bloqunuzu sürətləndirmək və axtarışlarda daha görünən etmək istəyirsiniz? Odoo veb-saytınız üçün yükün təhlili, səhifə keşinin qurulması, operativ yaddaşın həcminin və işçi proseslərin sayının müəyyənləşdirilməsi və çoxdilli axtarış sistemi optimallaşdırması sahələrində sizə dəstək veririk. Modulun mənbə kodunu burada tapa bilərsiniz: GitHub-da tapa bilərsiniz.

İndi əlaqə saxlayın

Son yenilənmə: 10 noyabr 2026. Ölçmə nəticələri nümunə verilənləri olan sınaq sistemindən götürülüb və digər quraşdırmalarda eyni nəticələrə zəmanət vermir.