ASP.Net arbeitet sehr exzessiv mit sogenannten View States. Aber was sind diese Viewstates und wozu werden diese benötigt?
Viewstates ist im Grunde nicht anderes als eine Möglichkeit Sitzungs-Statis zwischen zu speichern. Das Web und auch ASP.Net Seiten sind statusfrei. Mittels Rückübertragungen oder Round Trips werde die Statis jedoch beim auslösen einer Aktion mit übertragen und im Seiten Code mit „geschleift“. Darin können sich z. B. Formularinhalte befinden oder andere Informationen die vom Besucher verändert werden können und einer weiteren Verarbeitung erhalten werden müssen.
Viewstates speichern diese Statis in einer Verschlüsselten Form im Seiten Code. Je nach Seitenumfang und Art der Seite kann dieser Viewstate eine erhebliche Größe erlangen, welche sich im Seite Header befindet.
Suchmaschinen scannen die Internet Seite nach verwertbaren Keywords. Je weiter oben sich ein Keyword befindet umso größer oder besser ist die Bewertung dieses Suchbegriffes. Sind nun am Seitenanfang 100 Kb Viewstate Informationen kann dies eine sehr schlechte Bewertung Ihrer Keyword nach sich ziehen. Daher kann ich Ihnen nur empfehlen den Viewstate aus dem HTML Source zu entfernen und an einer anderen Stelle abzulegen.
Eine Möglichkeit ist das Ablegen des Viewstates in der Session.
Folgende Schritte sind dazu nötig:
Erstellen einer neuen Klasse Namens BasePage:
Partial Public Class BasePage
Inherits System.Web.UI.Page
Private _formatter As New LosFormatter
In diese Klasse müssen dann eine Funktion und eine Sub eingefügt werden die dafür verantwortlich sind dass der Viewstate in der Session gespeichert wird und auch dort wieder gelesen werden kann:
Protected Overrides Sub SavePageStateToPersistenceMedium(ByVal viewState As Object)
Dim Key As String = Request.Url.ToString & "__VIEWSTATE"
Dim memStream As New System.IO.MemoryStream
_formatter.Serialize(memStream, viewState)
memStream.Flush()
Session(Key) = memStream
End Sub
Protected Overrides Function LoadPageStateFromPersistenceMedium() As Object
LoadPageStateFromPersistenceMedium = ""
If Not Session(Key) Is Nothing Then
Dim memStream As System.IO.MemoryStream = CType(Session(Key), System.IO.MemoryStream)
memStream.Seek(0, IO.SeekOrigin.Begin)
Return _formatter.Deserialize(memStream)
End If
End Function
Damit nun die Funtionen aus der neuen Klasse beim Seiten Aufruf ausgeführt werden können, muss die neue Klasse BasePage in alle bestehenden Seiten in der Code Behind Datei mittels Inherit Anweisung anstatt der normalen Klasse System.Web.UI.Page neu vererbt werden. Die bisherige Klasse System.Web.UI.Page wird dann wiederrum durch die Basepage vererbt.
Inherits BasePage
Sind diese Schritte erledigt wird der Viewstate nicht mehr im HTML Code gespeichter sondern im Sitzungsstatus und die Suchmaschine wird durch den Viewstate nicht beeinflusst.
Suchmaschinen Optimierung (SEO) Einführung Suchmaschinen Optimierung (SEO) Title Tag und Meta Description Suchmaschinen Freundliche URLs (SEF) Suchmaschinen Optimierung (SEO) Postbacks