2010-08-12 3 views
1

서버에서 외부 변수를 가져올 때 URLVariables 내 플래시가 첫 번째 컴파일 값에서 멈춤. 서버 값을 업데이트 할 때마다 플래시가 첫 번째 이전 값을 컴파일합니다. CS4 IDE를 다시 시작한 후에 만 ​​값이 업데이트됩니다. 내부 캐시가 있습니까?외부 데이터를로드 할 때 Flash CS4 IDE 내부 캐시

내 Mac에서는 잘 작동하지만 PC에서는 작동하지 않으므로 내 코드에는 아무런 문제가 없습니다.

답변

2

이것은 완전히 추측이지만 플래시가 OS를 통해 요청을하고 있으며 그 결과가 다른 곳에서 캐시되고 있다고 생각됩니다. 어느 쪽이든, 이와 같은 문제를 해결하기위한 일반적인 방법 중 하나는 server.com/script.php?random=209327에서 데이터를로드하는 것과 같이 의미없는 변수를 요청에 추가하는 것입니다. 숫자는 물론 무작위로 지정됩니다. 이 방법은 각 요청의 URL이 이전 요청과 일치하지 않으며 캐시 된 결과를 얻지 못합니다.

+0

이 무작위적인 변수 아이디어를 좋아합니다. –

+0

이들은 실제로 Internet Explorer 캐시에 저장되며 임의의 변수를 추가해도 캐시 된 항목이로드되지 않습니다. 이것은 추측이 아니라 사실입니다. 내 게시물보기. – Triynko

2

이들은 시스템의 "임시 인터넷 파일"캐시 (예 : I.E.의 캐시)에 저장됩니다. Firefox를 기본 브라우저로 사용하고 있지만 여전히 "AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files \ Content.IE5"하위 폴더에 저장되어 있습니다.

다음은이 사실을 입증 한 방법입니다. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystem \ NtfsDisableLastAccessUpdate를 0으로 설정하여 Windows 7에서 NTFS 마지막 액세스 시간 업데이트를 다시 활성화하고 컴퓨터를 다시 시작했습니다. 나는 다음 Visual Studio를 열고 아래의 코드와 같이 구성된 FileSystemWatcher 구성 인스턴스 프로그램을 만들어 :

FileSystemWatcher watcher = new FileSystemWatcher("C:\\", "*.swf"); 
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite; 
watcher.Changed += new FileSystemEventHandler(watcher_Changed); 
watcher.IncludeSubdirectories = true; 
watcher.EnableRaisingEvents = true; 

다음, 나는 원격 서버에서 외부 SWF 파일을로드 플래시 CS6에서 프로그램을 테스트했다. URLLoader 클래스를 사용하여 파일의 바이트를 먼저 가져온 다음 Loader 인스턴스의 loadBytes 메서드를 호출하여 SWF의 바이트를로드합니다. (URLLoader를 사용하면 원격 SWF가 동일한 응용 프로그램 도메인 및 로컬 SWF의 보안 도메인에로드되지 못하도록하는 로컬 보안 샌드 박스 제한을 우회 할 수있는 해결 방법이며, 원격 SWF가 정의 된 클래스를 사용하므로 내 코드 기반의 요구 사항입니다 로컬 컨테이너 SWF에 있음).

"watcher_Changed"이벤트 처리기는 Flash IDE의 플레이어가 액세스하거나 작성한 파일을 나열하고 이것이 나타났습니다.

"C:\Users\[your_username]\AppData\Local\Adobe\Flash CS6\en_US\Configuration\CodeModel\cm-cache\SwcCache\basemovie3.swc1272273593\library.swf" 

원격 SWF는 "l003s.swf는"(문제가 하나가 캐시되는 :

컨테이너 SWF "basemovie3.swf"(주 프로젝트 파일)

는 디렉토리에서로드), 디렉토리에서로드되었습니다 :

"C:\Users\[your_username]\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\IGH0THHW\l003s[1].swf" 

그래서 당신은 그것을 가지고 있습니다. 원격으로로드 된 SWF는 Temporary Internet Files 캐시에서로드되었습니다.

원격으로로드 된 파일 "l003s.swf"의 URL에 "? random = random numbertimestamp = currenttime"형식의 쿼리 문자열을 추가 했음에도 불구하고 파일 시스템 감시자는 모든 SWF 파일에 전혀 쓰지 않습니다 다른 쿼리 문자열로 여러 번 파일을로드하려고 시도하고 서버에서 파일을 업데이트 한 후 몇 번 더 시도합니다.

파일을 지우는 가장 좋은 방법은 시작 메뉴를 열고 "임시"를 입력하는 것입니다. "임시 인터넷 파일 설정 변경", "쿠키 또는 임시 파일 삭제"옵션 중 하나를 클릭 할 수 있습니다. 또는 "인터넷 사용 기록 삭제"를 클릭하십시오.그들은 모두 임시 인터넷 설정 창으로 이동하여 인터넷 사용 기록과 캐시를 삭제할 수 있습니다.

관련 문제