2010-08-12 79 views
1

當從服務器URLVariables檢索外部變量時,我的Flash卡住了第一個編譯值。每當我更新服務器值時,flash都會編譯第一個舊值。只有在重新啓動CS4後,IDE的值纔會更新。有沒有內部緩存?加載外部數據時Flash CS4 IDE內部緩存

我的代碼沒有問題,因爲它可以在我的Mac上正常工作,但不能在PC上正常工作。

回答

2

這純粹是一種猜測,但我懷疑Flash是通過操作系統發出請求的,結果被緩存在其他地方。無論哪種方式,解決這類問題的一種常見方式是在您的請求中附加一個無意義的變量 - 如從server.com/script.php?random=209327加載數據,其中數字當然是隨機的。這樣每個請求的URL都不匹配任何先前的請求,並且您不會獲得緩存的結果。

+0

我喜歡這個隨機變量的想法。 – 2010-08-17 10:20:25

+0

它們實際上存儲在Internet Explorer緩存中,並且追加一個隨機變量不會阻止加載緩存的項目。這不是猜測,這是事實。看我的帖子。 – Triynko 2012-09-18 18:16:16

2

它們存儲在系統的「Temporary Internet Files」緩存(即I.E.的緩存)中。我將Firefox作爲默認瀏覽器,但它們仍保存在「AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files \ Content.IE5」子文件夾中。

以下是我如何確定這一事實。我首先通過將HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystem \ NtfsDisableLastAccessUpdate設置爲零並重新啓動計算機來重新啓用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; 

接着,我測試在Flash CS6一個程序,它從遠程服務器加載外部SWF文件。它使用URLLoader類首先獲取文件的字節,然後調用Loader實例的loadBytes方法來加載SWF的字節。 (使用URLLoader是一種繞過本地安全沙箱限制的解決方法,否則將阻止遠程代碼加載到本地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 = randomnumber & timestamp = currenttime」形式的查詢字符串,儘管儘管如此,文件系統觀察者仍然報告沒有寫入任何SWF文件嘗試使用不同的查詢字符串多次加載文件,以及在更新服務器上的文件之後嘗試加載更多次。

看來清除文件的最好方法是打開你的開始菜單並輸入「Temporary」,你可以點擊任何選項「更改臨時Internet文件設置」,「刪除cookies或臨時文件」,或「刪除瀏覽記錄」。他們都會將您帶到臨時Internet設置窗口,您可以在其中刪除瀏覽記錄和緩存。