przez koder89 » 6 marca 2015, o 15:17
Aż założyłem konto, żeby wyjaśnić nieścisłości. Wiem, że ostatni wpis był 10 lat temu, ale google cały czas ten temat znajduje, więc pozwolę sobie wyjaśnić, aby inni mogli znaleźć tu rozwiązanie.
Buforowanie w PHP, które opisuje SorXos i gimbys1, ma zupełnie inne zadanie niż buforowanie plików w JavaScript, którego dotyczy pytanie. Skrypty PHP są wykonywane na serwerze i mają za zadanie na podstawie otrzymanych parametrów wygenerować odpowiedni kod HTML i wysłać go do przeglądarki. Tutaj w żadnym wypadku nie zachodzi ładowanie strony po kawałku. Część skryptów PHP jest bardzo często wywoływanych z tymi samymi parametrami, przez co generują one ten sam wynik. Aby odciążyć nieco zasoby serwera i poprawić wydajność strony stosuje się bufor, który zapamiętuje gotowy wynik (kod HTML) dla podanych parametrów. Buforowanie można, np. zastosować do wyświetlania informacji o imieniu i nazwisku zalogowanego użytkownika, aby za każdym razem nie szukać go w bazie danych.
Z kolei buforowanie plików za pomocą JavaScript ma na celu załadowanie na maszynę klienta plików z serwera zanim jeszcze zostaną użyte oraz zapamiętanie wcześniej użytych plików. Ten drugi przypadek większość przeglądarek realizuje już sama. Po załadowaniu strony przeglądarka zapamiętuje w odpowiednim katalogu wszystkie grafiki, które na niej są. Przy ponownym wejściu na tą stronę nie musi ich ponownie zaciągać, przez co strona otwiera się szybciej.
Pierwszy przypadek pozwala na zaciągnięcie np. grafik zanim jeszcze zostaną użyte, przez co lepiej zadziałają migawki (podmiany grafiki po najechaniu na nią). Nie orientuję się za dobrze, czy istnieje jakiś gotowy mechanizm do tego, ale ja zrobiłbym to ręcznie wrzucając grafikę do jakiegoś ukrytego pola, a w akcji tylko podmieniał pola miejscami (jedno ukrywać drugie pokazać). Chociaż zastosowanie bufora do tego typu operacji jest raczej przerostem formy nad treścią, ponieważ można to zrealizować za pomocą CSS używając clip. A obrazki połączyć w jeden i pokazywać odpowiednie jego części.