2015-06-24 58 views
0

您好,我們正在開發一個網站,供學生參加在線測試。 我們正在研究PHP My SQL。 所有測試的問題都存儲在一個test_id與測試相關的表中。 問題: 現在,隨着測試問題從服務器加載,它有時需要時間加載。 由於這些測試正在進行TIMED(在線測試),因此測試者覺得他的時間正在浪費。在線測試平臺

加載時間可能
互聯網連接速度較慢 DATABSE搜索 問題的結果/ s的 什麼是給人一種jerkless經驗的測試者,不論他的網速和電腦配置的最佳途徑。

回答

1

從你的措辭來看,我假設每個問題都有其自己的時間限制。

消除用戶的慢速連接是不可能的;如果您在客戶端上測量時間以避免這種情況,那麼您就會打開它來欺騙(客戶端可以破解JavaScript以呈現錯誤的時間)。

但是,您可以消除數據庫查詢時間:設置websocket服務器,讓用戶在開始測試時連接到它,在服務器上預先加載所有相關問題到隊列中,並在用戶請求時一個問題,立即記錄當前時間,並通過websocket連接從隊列中發送下一個問題。

還要確保在收到問題時,客戶端JS立即顯示它,並且不必例如進一步的AJAX調用或請求才能顯示它。如果需要額外的信息,應該由您的websocket服務器查找並捆綁該問題。

通過這樣做,你應該能夠得到低於50ms的響應時間,如果用戶有一個體面的互聯網連接,並在與你的websocket服務器在同一國家。

+0

Thansk回覆否有對comelete測試的時間限制不在個別問題 –

+0

再次!!!不能在客戶端預加載所有的問題。 –

0

無論用戶的網絡連接如何,您都無法加速加載。當然,您可以(也應該)優化所有SQL查詢和長時間運行的任務,以使其性能儘可能好。

爲了避免測試時間耗盡問題,我建議在時間開始運行之前加載所有問題。然後,所有數據都可以存儲在客戶端local storage(請參閱this link瞭解更多信息) - 但請注意,只有瀏覽器支持本地存儲時才能使用。

另一種可能性是加載/生成所有數據並具有一些服務器端緩存(如memcached或簡單文件緩存)。在每一個新動作上,都可以查詢緩存而無需查詢數據庫中的所有數據。當然,如果性能問題存在於長時間運行的查詢,數據庫速度等方面,這隻會加速進程,而不會影響用戶的Internet連接速度。

+0

再次感謝!!!你已經向我們展示了路徑。我們將先嚐試HTML 5,然後再嘗試Memcached。 –

+0

很高興我可以幫助;-)請不要忘記標記答案如果它幫助你接受! – dhh

+0

你好,我可以將所有問題存儲在會話本身中,因爲我們之後不需要它。然後,我們只有在客戶端的會話中加載完所有問題後纔開始測試。 –