ie6 + ajax – koszmar z ulicy www

Wyobraźcie sobie system CMS dedykowany do obsługi naprawdę dużego ruchu, wielu redaktorów, wielopoziomowej możliwości akceptacji treści. Dobra może wystarczy. Jest sobie taki system.

Dla tych co wiedzą, jest to znany problem opisany nawet na wiki: XMLHTTP, więc jak kto zna, to nie czytać. Wpis sobie tak czy inaczej zrobię. Ku pamięci.

W przypadku jakiejś tam liczby rzeczy do wyświetlenia, np. drzewa folderów, czy dużej liczby dokumentów, warto zastosować prosty trick. Zamiast ładować całą stronę można załadować „szkielet”, a poszczególne treści dociągnąć za pomocą AJAX’a. Brzmi fajnie? I jest fajne. Same zalety, klient cieszy się że szybko coś widać, choć sumaryczny czas ładowania strony jest przecież większy, ale strona działa, można zmienić folder, przejść gdzieś po menu, a samo drzewo folderów czy też lista dokumentów z wybranego folderu może przyjść za chwilę.

Wszystko wydaje się być w porządku do momentu w którym się okazało, że dla IE6 cały system zachowuje się … dziwnie, gdzie dziwnie to efemizmm, bo dzieją się cuda. Nie da się zmienić statusu, nie da się skasować, edycja artykułu prowadzi w dziwne miejsca, a jak w dobre, to z dziwnymi danymi … cuda.

To wszystko z jednego powodu. Z jakiego? Pamięć podręczna programu Internet Explorer. Wyjść z tej sytuacji jest parę: wysyłanie requestów w trybie POST, odpowiednia modyfikacja nagłówków oraz prymitywna i niezwykle skuteczna: dodanie losowego ciągu znaków do urla. Proste, skuteczne i działa.

System … również.