我有一個通過AJAX調用運行的PHP腳本,有時可能需要很長時間(最多30秒)。爲了幫助保持訪問者的注意力,我展示了一個進程欄,介紹進程的程度,以及列出有關Web應用程序的隨機事件等等。開幕和閉幕會議是否會影響效果?
爲了更新進度條以顯示這個過程在一個%中究竟有多遠,腳本向會話寫入什麼是「過程」的狀態,「總量」是它需要做的量,「進度」是說完成了多少。在進行長時間的AJAX調用的同時,另一個單獨的AJAX調用會顯示一個列出這3個會話變量的頁面,以便它可以將其轉化爲JavaScript中的精確進度條,並且每0.5秒左右重複一次。
的問題是,爲了這第二個AJAX調用能夠檢索會話數據,會話必須關閉。所以在長度腳本中,它打開會話,寫入數據,然後關閉它。
有沒有造成這樣做任何顯著的性能損失?是否有更好的選擇來顯示漫長的AJAX呼叫有多遠?
編輯:我應該更仔細地選擇我的話。這個過程需要花費30多秒,而且有必要展示一個真正的進度條,而不是重複的gif。改變算法後,現在平均只需要1-5秒,但我猜測在極端情況下可能會達到10秒。它是異步的,頁面上還有其他內容,他們必須選擇啓動該進程。他們可以去其他頁面,甚至關閉窗口,稍後再回來查看完成。現在時間跨度明顯較低,我想知道如果我試圖展示一個「真正」的進度條,或者如果有另一種替代方法,我是否會傷害其快速性能。
它不會阻止用戶做任何事情。這是網頁應用程序的一部分,如果他們選擇運行,而網頁上仍有大量其他內容可用。它也被設置好,以便他們可以進入其他頁面,如果他們想要的話,回來看看是否完成。它也不再需要30秒,除非有一些極端的情況(絕對不應該),因爲我將它切換到更快的算法。儘管如此,我仍然希望讓他們更新進度,即使現在只有4-5秒。 – Nick 2010-10-29 20:14:16