Secara anekdot, saya telah mengunjungi banyak situs web .aspx yang memerlukan waktu buka yang signifikan untuk setiap halaman.
Apakah pengalaman saya unik?
Jika tidak, mengapa situs web ASP.Net dapat dimuat dengan lambat?
Sunting: Sekarang sekitar 7 tahun kemudian (29/12/2017). Berita baiknya adalah saya tidak melihat masalah ini lagi, mungkin karena Google mulai menghukum situs yang memuat terlalu lambat. Saya sekarang menggunakan ASP.NET MVC dengan hasil yang baik, saat ini berjalan di server virtual pribadi Vultr (Azure terlalu lambat ketika kami mencobanya.) Beberapa pelanggar terburuk yang saya lihat sekarang adalah sistem CMS seperti Wordpress dan Drupal, mungkin berjalan di perangkat keras yang terlalu lambat atau kurang dihargai untuk jumlah lalu lintas yang didapat situs. -HK1
Jawaban:
Lima kemungkinan yang bisa saya pikirkan (selain dari beberapa teknik caching canggih dan semacamnya):
Ukuran yang tidak tepat dari server web untuk ASP.NET (yaitu berpikir bahwa server berukuran untuk ASP klasik akan baik-baik saja)
Lupa menghapus
<compilation debug="true"/>
dari web.config dan mendapatkan kode yang kurang optimal .JIT untuk kunjungan pertama
Kode yang disematkan di halaman (sebagai lawan dari kode di belakang yang dikompilasi) yang membutuhkan kompilasi sebelum dan di samping JIT.
ViewState (untuk ASP.NET WebForms) menjadi terlalu besar .
sumber
Sepertinya ini mungkin jawaban yang layak.
Bisa jadi banyak faktor yang berperan. Situs yang Anda gunakan saat ini dibangun di .NET, dan biasanya sangat cepat (dikurangi waktu henti / periode pemeliharaan).
Pengembang situs yang Anda kunjungi mungkin mendorong banyak data kepada Anda, atau memperlambat koneksi, atau server yang kelebihan beban, dll. Dll. Ini juga bisa berupa persepsi yang berperan. Juga, mungkin javascript gila sedang bermain dan Anda menjalankan IE? Atau flash?
sumber
Jika Anda tidak benar-benar tahu apa yang Anda lakukan, ASP.NET WebForms memungkinkan Anda membuat aplikasi web dengan menjatuhkan kontrol ke formulir, bahkan menyembunyikan sifat kewarganegaraan http. Ini berfungsi, tetapi pengembangan semacam itu tidak akan menghasilkan kode yang efisien, terutama jika lapisan akses data Anda melibatkan kueri yang dihasilkan memilih segala sesuatu dari basis data sql express tanpa indeks.
Ada banyak situs web asp.net cepat di luar sana, yang dikembangkan oleh orang-orang yang mengerti bagaimana aplikasi web benar-benar bekerja. Itu termasuk situs ini - ia menggunakan ASP.NET MVC yang menyediakan lebih banyak kontrol atas penanganan permintaan individu dan tidak menunjukkan ekstensi .aspx.
sumber
Hanya spekulasi di sini karena saya perhatikan hal yang sama. Saya menduga bahwa situs .asp cenderung (perhatikan kata cenderung ) di-host sendiri di server perusahaan, sebagai lawan dari host di atau di pusat data. Jadi mereka sering dijalankan pada perangkat keras dan koneksi yang tidak dirancang untuk lalu lintas web kecepatan tinggi. Saya menduga situs yang didorong oleh fusi dingin juga menderita karena hal ini.
sumber
Ketika sebuah situs web memuat (event application.start), dibutuhkan waktu untuk memuat semuanya ke dalam memori. Tergantung pada pengaturan IIS, setelah sekitar 20-30 menit tidak aktif, itu akan diturunkan. Saya belum menemukan cara yang layak untuk menjaga aplikasi berjalan terus-menerus tanpa layanan melakukan
GET
setiap 10+ menit.Backend / datalayer yang dirancang dengan buruk dapat membuat segala sesuatu berjalan lambat (tidak peduli seberapa cepat komputer menjalankannya). Profiling akan membantu Anda mengidentifikasi di mana masalahnya.
sumber
Anda pasti membayangkan ini. :)
Banyak faktor yang berperan dengan perangkat lunak apa pun. Arsitektur, redundansi aliran kode, kualitas kode, dll. Terlalu banyak untuk mulai mendaftar.
Apakah Anda ingin bukti bahwa ASP baik untuk penggunaan di tingkat perusahaan? Situs ini (dan semua SE) situs web dibuat menggunakan ASP.Net - khususnya MVC.
Kapan terakhir kali situs ini lambat? Saya telah berada di sini selama lebih dari setahun dan tidak pernah sekalipun saya memperhatikan hal-hal berjalan lancar meskipun menggunakan basis yang besar.
sumber
Kondisi tampilan benar-benar dapat memperlambat postback. Jika Anda memiliki daftar drop down besar pada halaman Anda tidak harus menggunakan negara tampilan pada mereka.
Kondisi tampilan memungkinkan Anda berpura-pura sedang mengerjakan aplikasi winform stateful. Itu kadang-kadang bisa membuat Anda mendapat masalah.
sumber
Semua hal di atas kemungkinan benar. Faktor tunggal terbesar yang mempengaruhi kinerja di situs ASP.NET yang saya kerjakan adalah bahwa segala sesuatu yang berkaitan dengannya sudah tua. Versi .NET framework, server, infrastruktur database, dan kode itu sendiri mengalami penuaan yang buruk.
Saya menduga banyak situs ASP.NET cenderung situs perusahaan. Ini tidak mendapatkan banyak cinta, karena mereka cenderung hanya bekerja . Orang tidak menulis ulang sampai mereka harus melakukannya, yang seringkali sangat lama.
Saya tahu situs tempat saya bekerja dengan ASP.NET yang digunakan mendapat speedup besar hanya dengan pindah ke versi terbaru dari framework, yang memiliki JITing dan cache caching default yang jauh lebih efisien.
Hal lain yang saya lihat bahwa banyak situs ASP.NET tidak tahu bagaimana skala dengan benar. Mereka tidak memiliki pengaturan penyeimbangan muatan yang tepat karena merancang situs mereka agar berfungsi dengan benar dengan kebun web tidak umum atau terdokumentasi dengan baik di komunitas. Jika Anda tidak merancang situs untuk taman web sejak awal, Anda tidak dapat menggunakan mekanisme peningkatan skala bawaan yang dimiliki IIS. Perimbangan beban perangkat lunak dengan Windows NLB tidak terlalu umum dan rumit untuk dikelola. (Ini mengingatkan kembali pada kenyataan bahwa ASP.NET cenderung menjadi perangkat lunak perusahaan, dan cenderung dikelola oleh perusahaan yang menjalankan situs alih-alih profesional TI yang mengetahui cara mengonfigurasi hal ini dengan benar.)
Penyeimbangan beban perangkat keras dengan F5 sangat mahal, tetapi tampaknya merupakan mekanisme paling umum dan sederhana untuk meningkatkan situs ASP.NET dalam jaringan perusahaan. Saya pikir di antara kerumunan open source harapannya adalah bahwa Anda membangun penyeimbangan beban dari awal menggunakan alat open source yang tersedia secara otomatis skala berdasarkan penggunaan. Ini tidak umum di dunia ASP.NET dari apa yang saya lihat.
sumber