2017-09-27 60 views
5

Để tăng tốc thời gian phản ứng của ứng dụng ASP.NET MVC, chúng tôi muốn "khởi động" ứng dụng sau khi ứng dụng đã được cài đặt (hoặc sau khi nhóm ứng dụng đã được tái chế). Một số dữ liệu tra cứu thường được sử dụng sẽ được tìm nạp từ cơ sở dữ liệu SQL Server và được lưu trữ trong đối tượng toàn cầu System.Runtime.Caching.MemoryCache mà .NET cung cấp.ASP.NET MVC - Ứng dụng khởi động - sử dụng hai phương pháp nào?

Đối với trường hợp bạn có một máy ảo chuyên dụng với IIS chuyên dụng cho ứng dụng ASP.NET của bạn, trước hết tôi đặt nhóm ứng dụng là "Luôn chạy" - đó là bướC# 1.

Với tình hình này, có hai tùy chọn tôi thấy:

  1. Application hâm lại như mô tả in this blog post by Scott Gu dựa trên giao diện System.Web.Hosting.IProcessHostPreloadClient. Nếu tôi hiểu chính xác, mã này chạy khi hồ bơi ứng dụng được bắt đầu và trước khi yêu cầu đầu tiên được chấp nhận vào ứng dụng

  2. Sử dụng sự kiện Application_Start trong global.asax.cs. Nếu tôi hiểu chính xác, sự kiện này chỉ được gọi là khi, khi ứng dụng được bắt đầu lần đầu tiên (tự động xảy ra sau khi cài đặt, vì nhóm ứng dụng được đặt là "Luôn chạy" - phải không?)

Vì vậy - được thiết lập này - đó là cách ưa thích của "trước khi làm nóng" ứng dụng của bạn? Có sự khác biệt đáng kể nào giữa hai cách tiếp cận này không? Tôi cần phải biết gì khi đi với một cách tiếp cận khác?

Cảm ơn mọi đầu vào, gợi ý, cảnh báo hoặc các liên kết khác giải thích chi tiết hơn!

+0

Ứng dụng của bạn có được biên dịch trước không? nếu đã hợp nhất/chưa được hợp nhất. Tôi tin rằng điều này sẽ ảnh hưởng đến thời gian "ấm lên" của bạn. Dường như với tôi rằng chi phí luôn chạy là toàn bộ ứng dụng của bạn đang ngồi trong bộ nhớ và không bao giờ không phát hành "khi cần"? – DaniDev

Trả lời

2

Câu trả lời ngắn gọn, sử dụng IProcessHostPreloadClient - nó sẽ chạy ngay khi khởi động.

Application_Start là một chút nhầm lẫn, nó thực sự kích hoạt theo yêu cầu đầu tiên đầu tiên. Điều đó có nghĩa là trang web có thể tái chế/khởi động lại và đang ngồi nhàn rỗi, nơi nó có thể ấm lên.

Nếu trang web của bạn ở trên IIS 7 trở lên, tôi không biết lý do để sử dụng Application_Start.

+0

Đây là câu hỏi có liên quan/có liên quan: https://stackoverflow.com/questions/10623303/run-application-start-immediately-when-application-pool-restarts-in-iis – STW

Các vấn đề liên quan