當應用程序正在運行時,AIR似乎保留其自己的DNS緩存,並忽略對操作系統DNS緩存(即ipconfig/flushdns)的任何更改。是否有辦法刷新DNS緩存或強制主機名在Adobe AIR/Flash中重新解析?
更具體地說,我在AIR應用程序中長時間創建了多個URLStream & URLRequest對象。一旦第一個連接主機的IP地址在應用程序的整個生命週期內被緩存。可以理解,URLRequest.useCache屬性對DNS緩存沒有影響。
有誰知道是否有可能或如何強制主機名在AIR(或Flash)應用程序內重新解析?
注意:不幸的是,通過Web服務解析IP並重寫URL不是解決方法。用例是使用簽名的URL從Amazon S3下載文件,如果修改則簽名的URL無效。
更新:上述測試結果收集在AIR 1.5.2之前的WinXP上。後續的使用1.5.2的測試顯示帶有URLStream.load()的序列化請求被更頻繁地重新解析,但仍然忽略TTL值。我仍然沒有弄清楚觸發重新解決的必要條件,但已經注意到一些阻止它的情況。例如,如果另一個異步URLStream對同一主機處於活動狀態,則請求將使用緩存的IP地址並且不會被解析。只需將所有流關閉並取消引用到主機,都不足以確保在下一個請求中重新解析相同的主機名。
Mac OSX上的AIR 1.5似乎不會像WinXP上的AIR那樣存在緩存問題。 – 2009-09-11 01:58:15