ASP.NET Hosting – Performance Tip: ASP.NET Session State

Sessions: Bagian yang baik
HTTP merupakan suatu stateless protocol. IIS memperlakukan setiap permintaan HTTP untuk halaman sebagai permintaan yang independen. Server mempertahankan informasi nilai-nilai variabel yang digunakan selama permintaan sebelumnya. ASP.NET session state  mengidentifikasi permintaan dari browser yang sama selama periode waktu yang singkat sebagai suatu session. Session menyediakan tempat untuk menyimpan nilai-nilai yang akan bertahan pada permintaan halaman . Secara default , nilai-nilai yang disimpan di server akan tetap dalam memori sampai mereka secara eksplisit dihapus atau sampai session berakhir (durasi default adalah 20 menit ). Penggunaan Session state ini, dapat diaplikasikan pada ASP.NET Hosting.

banner jarhost (persegipanjang)

Session diidentifikasi berdasarkan pada pengenal unik ( SessionID ). Ketika session state diaktifkan untuk aplikasi ASP.NET, setiap permintaan untuk halaman diperiksa berdasarkan nilai SessionID yang dikirim dari browser . Secara default, nilai-nilai SessionID disimpan dalam cookie. Jika tidak ada nilai SessionID yang diberikan, ASP.NET memulai sesi baru dan nilai SessionID pada session itu dikirim ke browser dengan respon.

Berikut adalah ASP.NET cookie khas yang dapat Anda temukan di tiap situs web ASP.NET:

session

Session tersedia untuk semua pengguna dan tidak hanya menghubungkan pengguna. Misalnya, Anda dapat menyimpan bahasa / pengaturan / TimeZone / … untuk session anonim, sedangkan Anda dapat menyimpan login / cart / … untuk pengguna terdaftar. Session seperti cache tapi khusus untuk tiap pengguna. Kita tidak bisa menyimpan segala sesuatu di cookie atau reload data pengguna  dalam setiap permintaan, itu sebabnya kami juga memiliki session.

Ukuran Session: Bagian yang buruk

Praktek pertama yang baik dan cepat yaitu untuk menjaga data session sekecil mungkin. Sebagai contoh, 5 000 session aktif dari 100 Ko akan membutuhkan setidaknya 500 MB memori pada server web . Bagaimana IIS akan mengelola ini? Faktanya, sangat tidak baik. Web server / Front-end umumnya memiliki ukurang yang sedang dan Anda tidak bisa menganggap akan selalu memiliki 64 GB . Tentu saja, Anda dapat menyimpan session di tempat lain ( menggunakan penyedia session state store yang terpisah ) , tapi masalahnya akan cukup sama. Usahakan untuk selalu menyimpan simples object atau primitives types: ini akan mengurangi ukuran session dan panggilan ke session ( lihat bagian berikutnya )
Permintaan bersamaan dan Session State : Bagian yang buruk (2)

Akses ke ASP.NET session state eksklusif per session, yang berarti bahwa jika dua pengguna yang berbeda melakukan permintaan secara bersamaan , akses ke tiap session terpisah diberikan bersamaan. Namun, jika dua permintaan bersamaan dibuat untuk session yang sama ( dengan menggunakan nilai SessionID yang sama ) , permintaan pertama mendapat akses eksklusif untuk informasi session. Permintaan kedua mengeksekusi hanya setelah permintaan pertama selesai. Sepuluh tahun yang lalu, itu tidaklah menjadi masalah. Tapi sekarang, dengan banyaknya permintaan AJAX per halaman, live interface, multi – tab browsing, hal itu benar-benar menjadi masalah dalam sistem dan performa di sisi client .

Demo

Saya akan menunjukkan bagaimana permintaan bersamaan dapat menghambat kinerja pada template standar ASP. NET MVC 4.0. Berikut adalah Action sederhana pada HomeController saya. Pada bagian lain, saya akan memanggil action ini setiap 10 detik dengan script AJAX seperti ini.

https://techblog.betclicgroup.com/wp-content/uploads/2013/06/actionstuff.png

Dengan single-tab dibuka, inilah lalu network traffic-nya:

singletab

Dengan 3 Tab dibuka, inilah network traffic dari tab pertama:

3tabs

Ini action yang sama! Namun, karena penguncian eksklusif, waktu untuk memanggil MVC menjadi lebih panjang. Anda dapat mencoba sendiri karena ini sangat mudah untuk dicoba.

Ada banyak cara  untuk memecahkan masalah ini dan ini benar-benar tergantung pada kode Anda.

  • Jangan gunakan ASP.NET Session jika tidak diperlukan. Sesi harus digunakan untuk kegiatan data seperti cart. Di masa lalu, saya telah melihat terlalu banyak properties yang tidak diinginkan seperti IP, IsLogged, Alamat Pengguna, …
  • Ubah default SessionStateBehavior untuk Controller Anda. Cukup lengkapi controller Anda (atau BaseController) dengan SessionStateAttribute dan terapkan pada ReadOnly atau Disabled. Banyak actions Anda yang dapat meminta session, tetapi hanya sedikit yang akan meninggalkan sesuatu pada session state.

Catatan: Anda harus secara eksplisit menambahkan atribut ke controller. Bahkan jika tampaknya Anda tidak menggunakan session state, ASP.NET internal akan memperoleh kunci eksklusif selama permintaan. Ini adalah perilaku default.

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
public class HomeController : Controller
{..}
  • Gunakanlah layanan REST-like seperti ASP.NET WebAPI atau WCF REST. Karena REST adalah stateless, penggunaan session state dilarang.
Advertisements
Tagged with: , , , ,
Posted in ASP.NET

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

@jaringanhosting
ASP.NET ASP.NET hosting asp.net hosting bagus ASP.NET hosting murah ASP.NET MVC ASP.NET MVC untuk Website asp shopping cart murah backup database belanja online bisnis online murah cara mengaktifkan IIS cara meningkatkan visitor Cloud hosting Cloud Hosting Murah cloud server dedicated server dedicated server hosting dedicated server hosting murah develop sharepoint dotnetnuke dotnetnuke hosting berkualitas Dotnetnuke hosting murah drupal drupal hosting e-commerce murah e commerce website e commerce website design hosting bagus hosting berkualitas hosting muarh hosting murah IIS iklan gratis joomla joomla hosting murah menghasilkan uang lewat facebook menghasilkan uang lewat twitter meningkatkan pendapatan bisnis online microsoft microsoft microsoft visual studio online shop oscommerce berkualitas oscommerce hosting oscommerce hosting murah oscommerce murah sharepoint hosting sharepoint server software sql hosting murah technology tips Tips & Trick ASP.NET tips and trik menaikkan pengunjung website Tips ASP.NET tips berbelanja online tips crystal report tips memanfaatkan jejaring sosial untuk bisnis Tips Memilih Proviider Cloud Hosting tips menaikkan pengunjung Tips Menghasilkan Uang melalui Jejaring Sosial tips meningkatakn pendapatan toko online tips meningkatkan pendapatan e-commerce tips sharepoint toko online Trik Memilih Provider Cloud Hosting trik menaikan jumlah pengunjung website VPS Hosting windows Windows Cloud Hosting Murah Windows Cloud Server Murah windows hosting windows hosting murah windows server murah wordpress murah Wordpress tips
%d bloggers like this: