Mam problem, który wydaje się być związany z buforowaniem bloków statycznych CMS.
Mam stronę cms i na tej stronie renderuję kilka bloków statycznych cms. Uproszczona wersja zawartości strony CMS wygląda następująco:
<div class="cms-block-1">{{block type="cms/block" block_id="banner_home"}}</div>
<div class="cms-block-2">{{block type="cms/block" block_id="promo_home_1_1"}}</div>
<div class="cms-block-3">{{block type="cms/block" block_id="promo_home_1_2"}}</div>
<div class="cms-block-4">{{block type="cms/block" block_id="promo_home_2_1"}}</div>
<div class="cms-block-5">{{block type="cms/block" block_id="promo_home_2_2"}}</div>
<div class="cms-block-6">{{block type="cms/block" block_id="promo_home_2_3"}}</div>
<div class="cms-block-7">{{block type="cms/block" block_id="promo_home_3_1"}}</div>
<div class="cms-block-8">{{block type="cms/block" block_id="promo_home_3_2"}}</div>
Strona ładuje się zgodnie z oczekiwaniami natychmiast po wyczyszczeniu pamięci podręcznej bloków, strona wygląda mniej więcej tak:
<div class="cms-block-1">banner content</div>
<div class="cms-block-2">promo_home_1_1 content</div>
<div class="cms-block-3">promo_home_1_2 content</div>
<div class="cms-block-4">promo_home_2_1 content</div>
<div class="cms-block-5">promo_home_2_2 content</div>
<div class="cms-block-6">promo_home_2_3 content</div>
<div class="cms-block-7">promo_home_3_1 content</div>
<div class="cms-block-8">promo_home_3_1 content</div>
Jednak po początkowym załadowaniu strony każde kolejne ładowanie strony jest niepoprawne. To wygląda tak:
<div class="cms-block-1">banner content</div>
<div class="cms-block-2">promo_home_1_1 content</div>
<div class="cms-block-3">promo_home_1_2 content</div>
<div class="cms-block-4">promo_home_1_1 content</div>
<div class="cms-block-5">promo_home_1_2 content</div>
<div class="cms-block-6">promo_home_2_1 content</div>
<div class="cms-block-7">promo_home_2_2 content</div>
<div class="cms-block-8">promo_home_2_3 content</div>
W drugim przykładzie widać, że pierwsze dwa promocje są poprawne, jednak wszystko po tym wyświetla nieprawidłową treść dla block_id. Ponadto blok promo_home_1_1 i promo_home_1_2 są renderowane dwukrotnie, a promo_home_3_1 i promo_home_3_2 nigdy nie są renderowane. To tak, jakby mapowanie między block_id a powiązaną z nim statyczną zawartością bloku zostało w jakiś sposób pomieszane. Jest to związane z buforowaniem, ponieważ jeśli blokowanie pamięci podręcznej bloków nie jest włączone, to nie widzę już problemu.
Warto również zauważyć, że ta strona działała na EE 1.13, jednak po aktualizacji do EE 1.14.2 problem zaczął występować.
Zdaję sobie sprawę, że ciężko jest powiedzieć, co jest nie tak, nie wiedząc, co jeszcze dzieje się w systemie, ale mam nadzieję, że ktoś może dać mi przynajmniej trochę więcej wskazówek, ponieważ brakuje mi pomysłów.
Aktualizacja:
Próbowałem też tego z widżetami, np
<div class="cms-block-1">{{widget type="cms/widget_block" template="cms/widget/static_block/default.phtml" block_id="63"}}</div>
<div class="cms-block-2">{{widget type="cms/widget_block" template="cms/widget/static_block/default.phtml" block_id="64"}}</div>
<div class="cms-block-3">{{widget type="cms/widget_block" template="cms/widget/static_block/default.phtml" block_id="65"}}</div>
W tym przypadku wszystkie 3 bloki zwróciły tę samą treść, mimo że identyfikatory wskazują różne bloki w bazie danych. Po wyczyszczeniu pamięci podręcznej zwracany blok czasami się zmienia, ale wszystkie trzy widżety nadal będą miały tę samą zawartość.