2009-08-09 51 views
3

當應用程序正在運行時,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地址並且不會被解析。只需將所有流關閉並取消引用到主機,都不足以確保在下一個請求中重新解析相同的主機名。

回答

1

這不是一個明確的答案,但似乎您可以通過向其他主機發出一個或多個請求來從AIR的DNS緩存中刪除條目,從而覆蓋緩存中的目標主機名。然後解析目標主機名的下一個請求。

雖然我仍然不清楚在DNS緩存中可以保存多少條目。所以其他請求的數量可能會有所不同,這使得這種技術可疑。

+0

Mac OSX上的AIR 1.5似乎不會像WinXP上的AIR那樣存在緩存問題。 – 2009-09-11 01:58:15