Po zmianie nazwy domeny, w której hostowana jest aplikacja flash, powinienem zmienić plik crossdomain.xml. Ten plik crossdomain.xml jest hostowany na serwerze api, z którego korzysta aplikacja flash. Widzę, że Flash korzysta z crossdomain.xml z pamięci podręcznej przeglądarki. Czy istnieje jakaś sztuczka, aby flash nie dostał crossdomain.xml z pamięci podręcznej? Może jest jakiś parametr, który mogę przekazać do flashowania podczas jego wywołania w tagu object?crossdomain.xml zapobiega buforowaniu
Odpowiedz
Irytująca kwestia - bez wątpienia.
Po pierwsze: lubię buforowanie - o ile mam kontrolę. To jest, w jaki sposób uzyskuję kontrolę nad buforowaniem crossdomain.xml:
Załóżmy, że mamy aplikację flash, która wymaga pewnych danych wejściowych z innego serwera. W moim przypadku mamy ten skonfigurowany jako FlashVar dataSrc=http://www.company.com/data/calendar.xml
Więc błysk szuka www.company.com/crossdomain.xml
... który jest ładowany raz i nie pochodzi z cache przeglądarki użytkownicy dopóki nie wypłukuje go ręcznie.
Rozwiązanie polega na zmianie subdomenę crossdomain.xml ist albumu:
Upewnij się, że na przykład noCache.company.com/ wskazuje company.com za DocumentRoot (!). Flashvar został zmodyfikowany do dataSrc=http://noCache.company.com/data/calendar.xml
. W rzeczywistości adresujesz ten sam plik co wcześniej.
Flash poszukuje noCache.company.com/crossdomain.xml
, który zostanie pobrany z serwera teraz, ponieważ nie istnieje buforowany plik dla tego pliku URI.
To zależy od twojej fantazji ... jeśli pozwolisz subdomen jak noCache_ {numeric_value}, można łatwo obsługiwać własną TTL poprzez dostęp http://noCache_ {WEEK_OF_YEAR} .company.com/data/calendar.xml ...
Możesz również zwiększyć tę wartość liczbową za każdym razem, gdy zmienił się adres crossdomain.xml.
Zmusiłbym przeładowanie (F5 lub CTRL/CMD-F5) pliku crossdomain.xml bezpośrednio w przeglądarce, dopóki nie zobaczę, że się zmienia. Wystarczy wpisać URL pliku crossdomain w przeglądarce i kontynuować odświeżanie. Również wyczyściłbym pamięć podręczną przeglądarki.
Powinieneś wypróbować Firefox i firebug, który pokazuje, czy pobrane pliki są buforowane czy nie.
Powodzenia Rob
Dzięki za odpowiedź, ale mi nie jest jedynym człowiekiem, który chce zobaczyć miejsce pracy. Jest wielu innych, którzy chcą z niego korzystać. Załóżmy, że nie mogę fizycznie załadować bezpośrednio pliku crossdomain.xml przy użyciu ich przeglądarek). – Dao
mogę dołączyć liczb losowych do końca plików xml, jeśli nie chcesz, aby buforować np. var myXMLURL: String = "myXML.xml? r =" + Math.random() * 1000;
Przeglądarka widzi go jako inny plik, np. myXML.xml? r = 645/myXML.xml? r = 239
Nie jestem pewien, czy działałoby to z plikami crossdomain.xml, ale warto spróbować szybko.
Jak rozumiem, pojęcie "crossdomain.xml" jest wywoływane przez wewnętrzne mechanizmy Flasha. Jeśli wiesz, jak wpłynąć na to żądanie i dodać do niego parametry, udostępnij je. – Dao
Flash domyślnie żąda pliku crossdomain.xml u podstawy domeny, ale można go ustawić, wywołując Security.loadPolicyFile (str: String); http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/system/Security.html#loadPolicyFile() –
@ TrevorBoyle: Nie mogłem uzyskać Security.loadPolicyFile(), aby zrobić cokolwiek raz starego wersja crossdomain.xml została już zapisana w pamięci podręcznej, czy jest coś oczywistego, że mogę przeoczyć? –
Użyj następujących dyrektyw apache określić politykę buforowania dla pliku:
<Directory /var/www/mysite>
<FilesMatch "crossdomain.xml">
Header set Cache-Control "max-age=86400, public, must-revalidate"
</FilesMatch>
</Directory>
Tak, rozwiązałem mój problem w podobny sposób. Nadal czekałem na zarządzanie rozwiązaniem z tylko ustawieniami flash. Ale wygląda na to, że albo nie ma rozwiązania wykorzystującego tylko ustawienia lampy błyskowej, albo nikt o tym nie wie. Dlatego akceptuję tę odpowiedź jako działające rozwiązanie. Dzięki. – Dao
Dziękujemy! Wolałbym (popyt?) Także konfigurację flashową. Jest to taki typowy problem ... – HBublitz