Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 31580|Yanıt: 0

[Kaynak] ASP.NET MVC5, önceden derlenmiş modda yayımlanarak sayfa yükleme hızını ve performansını iyileştirir

[Bağlantıyı kopyala]
2020-8-22 10:05:17 tarihinde yayınlandı | | | |
Bir projede çok fazla sayfa olduğunda, IIS başlar ve web sitesi ilk açıldığında çok yavaş olur; çünkü proje çıkış anında önceden derlenmemiştir, kullanıcı web sayfasını ziyaret ettiğinde dinamik olarak derlenir. Mevcut sitenizin performansını artırmak ve sitenizde hata kontrolü yapmak istiyorsanız, projenizi yayınlarken "Yayın sırasında ön derleme" seçeneğini seçmeniz gerekir.

Giriş

Küçük projelerde, varsayılan ayarlara göre yayınlama temelde normal çalışmayı karşılayabilir; ilk sayfa 56 saniyede açılır (sunucu konfigürasyonuna bağlı olarak), diğer sayfaların ilk açılışı ise neredeyse 12 saniyede tamamlanır, ilk anında açılan açılma değil.

Proje işlevleri karmaşıklaştığında ve dosya sayısı arttığında, yayından sonraki ilk denemede ilk sayfayı açmak 30 saniyeden fazla, diğer sayfaların ilk açılışı ise yaklaşık 10 saniye sürer, ilk anında açılan sayfa değil.

Bunun nedeni, projenin yayımlandığı anda önceden derlenmemiş olması, kullanıcı web sayfasına eriştiğinde dinamik derlenmiş olmasıdır ve uygulama havuzu geri dönüştürüldüğünde veya proje dosyaları değiştirildiğinde, yeniden derlenir ve tekrar yavaş bir "ilk kez" sürecinden geçer ki bu da katlanılmaz bir durumdur.

Ön derlemenin faydaları

  • Performans. Derlenmiş kod, ECMAScript veya VBScript gibi betik dillerinden çok daha hızlı yürütülür çünkü makine koduna daha yakın bir temsil sunar ve ek analiz gerektirmez.
  • Güvenlik. Derlenmiş kod, derlenmemiş kaynak koddan daha zor çünkü yüksek seviyeli dillerin sahip olduğu okunabilirlik ve soyutlama eksikliğine sahiptir. Ayrıca, fuzzing araçları, derlenen kodun tersine mühendislik işlemlerine karşı direnç gösterme yeteneğini artırır.
  • İstikrar. Derleme sırasında kodunuzu sözdizimi hataları, tip güvenliği sorunları ve diğer sorunlar açısından kontrol edin. Bu hataları derleme zamanında yakalayarak, kodda birçok hata ortadan kaldırılabilir.
  • Birlikte çalışabilirlik. MSIL kodu herhangi bir .NET dilini desteklediğinden, kodda orijinal olarak diğer dillerde yazılmış assemble'leri kullanmak mümkündür. Örneğin, ASP.NET web sayfasını C# ile yazıyorsanız, Visual Basic'te yazılmış .dll dosyasına referans ekleyebilirsiniz.


ASP.NET Çekirdek ön derlenmiş

Ön derlenmiş

Ön derleme ASP .Net Core için varsayılan yöntemdir. Yayın zamanında, sistemdeki tüm Razor görünümleri varsayılan olarak önceden derlenir. Derlenmiş görünüm DLL'si xxx.PrecompiledViews.dll veya xxx.Views.dll olarak tekiz şekilde adlandırılır

Dinamik derleme

Tüm projeyi dinamik derlemeye yapılandırmak kolaydır, sadece false değeri olan bir yapılandırma projesi MvcRazorCompileOnPublish ekleyin



ASP.NET Web sitesinin ön derlemesi

Visual Studio'yu bir web sitesi yayınlamak için şu şekillerde kullanıyoruz:




"Bu ön derlenmiş siteye güncellemelere izin ver" seçeneğinin anlamı .Net web projesi yayınladığımızda, genel olarak tüm . CS dosyası, otomatik olarak bir DLL dinamik bağlantı kütüphanesi oluşturur ve bu da web sitesinin kaynak kodunu çok iyi koruyabilir, çünkü sunucu tarafı kodu genellikle . CS dosyasındaki DLL dosyalarının hepsi oluşturulup ardından sunucuya yüklendiği için, diğerleri kolayca açamaz!

Ancak, ashx, aspx ve diğer dosyalar gibi diğer dosyalar içindekiler olduğu gibidir, bazıları bu dosyaları açıp görebilir, ancak diğerleri CS kodunu göremez, ancak ASPX dosyasındaki HTML kodunu veya bazı sunucu kontrollerini ve ilgili nitelikleri görebilir; ashx gibi bir dosya, CS dosyasına eşdeğerdir ve içindeki kod kolayca görülebilir;

Bu nedenle, . CS dosyaları güvenlidir, ancak ASPX, ashx ve diğer dosyalar güvenli değildir; Peki, sunucuya yüklenen web dosyalarını güvenli hale getirmenin bir yolu var mı? Yayınlarken "Bu ön derlenmiş siteye güncellemelere izin ver" seçeneğini işaretlememek için bir yol vardır;

Bu ön derlenmiş siteye güncellemelere izin ver işareti

Web'i yayınlarken "Bu ön derlenmiş siteyi güncellemeye izin ver" seçeneğini işaretlerseniz, sonuç şöyledir: Tüm web sitesi dosyası, DLL dosyalarına derlenmiş tüm CS dosyaları hariç, diğer dosyalar ve orijinal dosyada hiçbir değişiklik yoktur, içinde ne var ya da ne var, başkaları Notepad üzerinden açtıkları sürece, içindeki kod, HTML kodu vb. bir bakışta görülebilir.

Ayrıca, kullanıcılar belirli bir sayfayı ilk kez ziyaret ettiklerinde, hataları bulmak için derlemeleri gerekir ve hata olmazsa normal şekilde erişilebildikleri için hız nispeten yavaşlaşır. Bundan sonraki ziyaretler normaldir;

"Bu ön derlenmiş siteye güncellemelere izin ver" seçeneğini kaldır

Web'i yayınlarken "Bu ön derlenmiş siteyi güncellemeye izin ver" seçeneğini işaretlemezseniz, sonuç şu şekildedir: 1. Web sitesindeki tüm CS dosyaları DLL dosyalarına derlenir; 2. cs dosyasına ek olarak, ASPX, ASHX ve diğer dosyalar da birlikte derlenir ve her dosya BIN dizininde karşılık gelen *.derlenmiş bir dosya oluşturur;

Bundan sonra, notpadden ASPX, ASHX ve diğer dosyaları bakarsanız, içinde herhangi bir kod görmezsiniz, hatta HTML kod işareti bile görünmez, böyle bir dosyayı açın, içinde sadece bir satır metin var, içerik "Bu, önceden derlenmiş araç tarafından oluşturulan bir işaretleme dosyasıdır, silinmemelidir!" ve bu dosyaların boyutu 1kb;

Bir web sitesi sayfasını açmaya çalışırsanız, proje başladıktan sonraki ilk sayfa hariç, ki bu da hâlâ 1~2 saniye sürer (EF yok), her bir sayfanın ilk kez anında açıldığını görürsünüz (EF'nin ilk yavaşlığı bu makalenin kapsamının dışında). Bu bana önceden derlenmiş programı görmek için geç kaldığımı hissettiriyor!

Burada gizlice söylüyorum ki, Views dizinini silmek web sayfasının normal açılışını etkilemez~ Neden silmesine izin vermiyorsunuz, sormaya cesaret etmiyoruz ve silmeye cesaret etmiyoruz.

Amaca ulaşıldı ve çözülmesi gereken bazı sonuçlar vardı, örneğin binler dizinindeki dağınıklık.

"Birleştirme" seçeneğini seçin. Her sayfa ve kontrol için ayrı montajlar oluşturun" ve sonuç binde çok daha fazla App_Web_*.dll dosya olur.



Yayınlanma anında, proje kökü bir PrecompiledApp.config dosyası oluşturur. İçerik şu şekildedir:



PrecompiledApp.config dosyası, uygulamanın nasıl dağıtıldığını ve ASP.NET talep anında herhangi bir dosyayı derleyip derlememesi gerekip gerekmediğini izlemek için kullanılır.




Önceki:C# 8.0'ın yeni özellikleri ve bilgi noktalarının açıklaması
Önümüzdeki:EF DbContext, bağlamın benzersiz olmasını garanti eder
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com