2015-06-01 24 views
0

我在我的網站上有一個測驗模塊,用戶可以參加測驗。我已經設定快取清除這樣的控制器:有時在Rails應用程序的生產環境中獲取404錯誤

def set_cache_buster 
    response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate" 
    response.headers["Pragma"] = "no-cache" 
    response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT" 
    end 

很少有用戶越來越隨機404錯誤。用戶使用Chrome on Windows 8.1。每天約有300-400名用戶參加測驗,其中有些人有時會遇到404錯誤。現在,由於我們只收到500個生產錯誤的通知,因此難以跟蹤404問題,並且我們在本地或測試環境中沒有遇到此問題。我擔心的是,如果這是一個代碼問題,那麼所有用戶都應該得到它,因爲有超過30,000個用戶。任何想法爲什麼只有少數用戶發生這種情況?

添加更多的信息: 它不涉及任何聯繫,它只是發生隨機。就像我們有3次嘗試讓用戶清除測驗一樣。很少有人得到錯誤,我們要求他們利用剩餘的嘗試,並嘗試測驗,他們能夠。大多數情況下,它只能正常工作。其他用戶已經完成了測驗,其中幾乎沒有報告404的測驗。 例如:在考試模塊中,問題逐個加載。 所以首先用戶去:exam_instructions/some_quiz。然後,用戶重定向到測驗頁面,在這裏我有一個形式是這樣的:

<%= form_tag({:action=> "calc_score",:id => @quiz.slug, :name => 'question'},:method => :post,:id=>'form',:name=>'question') do %> 
    <%= submit_tag "Submit" %> 
<% end %> 

用戶提交和表單數據去calc_score測驗ID。分數得到計算:

before_filter :find_quiz 

def calc_score 
    #Calculates the score for the current question 
    # redirects to the show page with the quiz id where the next question is presented to the user on the show page 
    redirect_to :action=> "show", :id=> @quiz.slug 
end 

def show 
#next question is loaded 
end 

protected 
def find_quiz 
@quiz = Quiz.find_by_slug(params[:id]) or raise(ActiveRecord::RecordNotFound) if params[:id] 
end 

現在,當用戶在提交測驗後突然接受測驗時,他們會看到404錯誤。現在,如果@quiz對象是顯示頁面本身不會加載,但它是存在的。只有在少數用戶出現問題時,會將:id更改爲undefined,用戶看到的是404錯誤頁面,其中100位用戶已完成相同測驗。

+0

檢查與IP相關的日誌文件,因爲您沒有提供太多的細節來調試並知道原因 –

+0

調試級別設置爲_:warn_ @CaffeineCoder。 – sahil

+0

您將需要在某處存儲有關404的數據,以便在此識別問題。你的http服務器是什麼? (即nginx,apache等)這應該有一個訪問日誌,但可能沒有足夠的信息來診斷問題。你可以改變你的通知設置,這樣你也可以得到404的通知。您是否確定**此問題僅影響Windows 8.1 + Chrome用戶? –

回答

0

最後根據@EugeneM的建議,在404通知的幫助下對問題進行了整理。有一個命名錯誤的變量,在某些情況下才會觸發。通知使得跟蹤錯誤更加容易。謝謝@EugeneM。

相關問題