Adobe ColdFusion (i Railo) kompiluje szablony CFML do kodu bajtowego JVM i, jeśli zostało to skonfigurowane, zapisuje skompilowane klasy (klasy) na dysk jako pliki .class. Pamięć podręczna szablonów jest mechanizmem mówiącym: jeśli klasa docelowa jest już załadowana, nie przejmuj się plikiem (źródłowym) na dysku, aby sprawdzić, czy potrzebuje rekompilacji - zaufaj temu, co jest w pamięci.
Niedawne udoskonalenia ACF i Railo umożliwiają określenie, że pliki (źródłowe) mogą być sprawdzane zawsze (niezaufane), raz na żądanie, nigdy (zawsze zaufane).
To nie powinno być wiadomością dla nikogo.
Oczywiście, ACF i Railo skompilują dowolny plik .cfm lub .cfc, który jest proszony o przetworzenie, aby te "trafiły" do zaufanej pamięci podręcznej, jeśli jest włączona.
Jeśli cfinclude plik - dowolny plik - ACF i Railo również skompiluje to do kodu bajtowego JVM (i utworzy plik .class na dysku, jeśli zostało to skonfigurowane). Ponieważ skompilowany plik jest kompilowany, będzie również "kończyć się" w zaufanej pamięci podręcznej.Co się stanie, jeśli włączysz plik CSS? Zostaje skompilowany do kodu bajtowego, który wyprowadza całą zawartość pliku CSS jako ciąg do strumienia odpowiedzi. Ponieważ jest to klasa skompilowana, która teraz wyprowadza zakodowany ciąg znaków, jeśli zmienisz plik źródłowy CSS i ma włączone zaufane cache, ACF i Railo zaufają temu, co jest w module ładującym klasy, i nie rekompilują go (zakładając, że "nigdy" źródłem sprawdzenia jest administrator oprawa).
Możesz to sprawdzić, czyszcząc folder cfclasses, restartując silnik CFML i uruchamiając swój kod. Zobaczysz plik .class dla twojego pliku CSS (zakładając, że masz zapisane pliki klas na dysku włączone).
Tak więc, cfinclude wymusza kompilację "dowolnego" pliku, a normalne reguły zaufanej pamięci podręcznej mają zastosowanie do klas ładowanych do pamięci.
Nie używam już ACF, więc nie mogę szczegółowo mówić do plików .cfr (Railo nie obsługuje plików raportów), ale najprawdopodobniej zależy to od tego, czy ACF skompiluje plik .cfr, czy nie. Powinno to być łatwe do zweryfikowania (patrząc w folderze cfclasses).
Dodałem kolejny przypadek, jaki odkryłem, gdy zawartość może dostać się do pamięci podręcznej szablonów. Czy masz dalsze spostrzeżenia? – nosilleg
Dodano wyjaśnienie. –
Podany link jest przykładem buforowanego obiektu na poziomie aplikacji, przy jednoczesnym kontynuowaniu dynamicznego wykonywania treści jego metody/pseudo-konstruktora, która z kolei jest opcją CFINCLUDE. Jest to analogiczne do mojej * Sytuacji B * powyżej. Obiekt i metoda są buforowane, ale to, co wywołuje metoda, gdy jest wywołane, nie jest. Nie ma to wpływu na zaufaną pamięć podręczną, która jest całkowicie oddzielnym procesem, który CF wykorzystuje do badania/ignorowania szablonów CF w celu modyfikacji/rekompilacji. –