我知道這已被問了太多次,但我無法從問題中找出解決方案。實體框架代碼前30+秒啓動時間
我對Entity Framework相當新穎,我使用Entity Framework 6和Code First方法爲我的網站開發了一個小型CMS面板。我的問題是,網站在第一次運行時非常慢(這是我正在測試www.oakwoodpawnshop.ca的網站),加載需要30秒。 第一次加載後,加載其他頁面需要大約一秒的時間。我從PageSpeed的洞察中獲得了89/100,我所有的images/js/css文件都被最小化了,並且完成了一些其他的前端優化,所以我知道我的問題與EF有關。我有3年前建立的另一個網站只使用LINQ,沒有數據庫優化或HTML /圖像優化,並在大約3秒內打開。
我已經使用Entity Framework Power Tools預先生成了視圖,並且我的代碼中沒有任何包含方法。我在.toList()函數之前過濾了我的查詢。我的代碼或數據庫優化可能有問題,但是我無法通過我的研究想出一個解決方案,因爲這個區域對我來說是新的。
我用我的母語找到了一篇文章,詢問有相同問題的人在命令提示符下運行一些代碼,看看問題是否出現在網絡設置中。
這些對於命令提示行:
1 - 的netsh INT IP復位A.TXT
2 - 的netsh Winsock的復位
3 - 的netsh WinHTTP的復位代理
4 - netsh advfirewall reset
5 - ipconfig/flushdns
6 - 重新啓動計算機並再次檢查。
當我做了這些,並檢查回到網站,整個網站在3秒內打開。一段時間後,它開始再次啓動30+秒。顯然,我無法在每個人的計算機上運行這些命令,但是我迷失了方向,我不知道爲什麼它要花很長時間才能啓動。
這裏是我使用的方法的例子:下一個「工人」類
public List<Categories> GetCategories()
{
List<Categories> c = db.Categories.Where(x => x.TopCategoryId == 0).OrderBy(x => x.CatOrder).ToList();
return c;
}
我創建自定義的方法來獲取我的DATAS(這樣我就可以更方便地使用它們)收集所有我方法在一個類中。這可能是問題嗎?
我很樂意提供您需要的更多信息,而且我現在處理這個問題大概一個月,但沒有運氣,所以我無望地尋找答案,或者我將不得不重新創建整個應用程序沒有EF,因爲客戶無法等待擁有+30秒開放時間的網站。
非常感謝您的寶貴意見!
問題很可能與遷移有關。你是否仍然在積極地處理你的應用程序,你必須有遷移活動?每次應用程序首次啓動時,都必須檢查__migrationHistory;如果您的應用程序不再進行主動更改,禁用遷移或將基準遷移從空數據庫遷移到單個當前遷移應該會有所幫助。 – Claies
Hi @Claies,非常感謝你如此快速:)我只是在內容方面的應用程序工作,所以很長一段時間沒有數據庫的變化。我刪除了我的遷移歷史記錄表和遷移文件夾,並再次發佈了該網站,請問是否可以檢查它是否已解決?它現在看起來對我更快 –