Vorschau der Website

Wenn die Domain noch nicht über den neuen Server erreichbar ist, kann die hochgeladene Website trotzdem schon angesehen und getestet werden.

Dazu gibt es 2 Möglichkeiten:

  1. Benutzen Sie im Adminpanel einfach die Websitenvorschau.
  2. Ändern Sie temporär Ihre lokale Hosts Datei.

Änderung der Hosts Datei. So geht es.

  1. Öffnen Sie den Windows Explorer und gehen Sie auf C:\Windows\System32\drivers\etc\
  2. Öffnen Sie die Datei Hosts als Administrator.
  3. Geben Sie folgende 2 Zeilen ein
    1. <IpAdresse>  <domainnameOhneWWW>
    2. <IpAdresse>  <domainnameMit*>
  4. Beispieleinträge
    1. 83.169.12.153 harb.at
    2. 83.169.12.153 *.harb.at
  5. Speichern Sie die Hosts Datei und starten Sie den Computer neu.
  6. Fertig

hosts

hosts-file

.tirol Domain

.tirol Domain ist die neue Domain für das Land Tirol.

Ab 1. Juni 2015 kann jeder eine „Tiroler Domain“ registrieren.

Die Domain .tirol ermöglicht es Unternehmen, kulturellen Institutionen, Vereinen, Medien, Künstlern und Privatpersonen ihre Zugehörigkeit zur Region zu zeigen.

Registrierung einer .Tirol Domain

Die Registrierung kann ganz einfach über unser Bestellformular erfolgen.
Wählen Sie einfach einen Domainnamen aus und überprüfen Sie, ob der Name noch frei ist.

Kosten / Preis der Domain .tirol

Tirol Domains kosten Euro 36.- / Jahr.

PHP 301 Redirect Beispiel

<?php

header(„HTTP/1.1 301 Moved Permanently“);
header(„Location: http://www.neuedomain.com/neuerordner/neueseite.htm“);
exit();

?>

ASP 301 Redirect Beispiel (VBScript)

<%@ Language=VBScript %>
< %
Response.Status=“301 Moved Permanently“
Response.AddHeader „Location“, „http://www.neuedomain.com/neuerordner/neueseite.asp“
Response.end
%>

ASP .NET 301 Redirect Beispiel (C#)

<script runat=“server“>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = „301 Moved Permanently“;
Response.AddHeader(„Location“,“http://www.neue-url.com/“);
}
< /script>

Plesk: Wichtige Befehle für das Commandline Tool %plesk_bin%

Rekonfigurieren einer Domain

Standardpfad zur Pleskinstallation

%plesk_bin%

C:\Program Files (x86)\Parallels\Plesk\admin\bin

 

CMD:

%plesk_bin%“\websrvmng.exe –remove-vhost –vhost-name=testdomain.com

%plesk_bin%“\websrvmng.exe –reconfigure-vhost –vhost-name=testdomain.com

%plesk_bin%“\websrvmng.exe –reconfigure-all

Zum Reconfigurien der FTP Zugänge

%plesk_bin%“\ftpmng.exe –remove-vhost –vhost-name=yourdomain.com
%plesk_bin%“\ftpmng.exe –reconfigure-vhost –vhost-name=yourdomain.com

Für alle Domains

„%plesk_bin%“\ftpmng.exe –remove-all
„%plesk_bin%“\ftpmng.exe –reconfigure-all

Komplette Reference

–help

–features

–status
–start
–stop
–restart

–install
–uninstall

–reconfigure-all
–remove-all

–add-ip-address –ip-address=<ip_address>
–remove-ip-address –ip-address=<ip_address>
–change-ip-address  –old-ip-address=<ip_address> –new-ip-address=<ip_address>

–set-certificate –ip-address=<ip>

–add-domain –domain-name=<domain>
–remove-domain  –domain-name=<domain>

–set-default-domain –ip-address=<ip> –vhost-name=<domain>
–reset-default-domain –ip-address=<ip>

–add-alias  –domain-name=<domain> –alias-name=<alias> [–web] [–mail]
–remove-alias  –domain-name=<domain> –alias-name=<alias> [–web] [–mail]
–rename-alias  –domain-name=<domain> –old-alias-name=<alias> –new-alias-name [–web] [–mail]
–change-alias-type –domain-name=<domain> –alias-name=<alias>
[–old-web] [–old-mail]
[–new-web] [–new-mail]

–install-vhost –vhost-name=<domain>
–reconfigure-vhost –vhost-name=<domain> [–config=<xml>]
–reconfigure-vhosts –vhost-names=<dom1[;dom2;…]>
–remove-vhost –vhost-name=<domain>
–rename-vhost –old-name=<old_domain> –new-name=<new_domain>
–start-vhost –vhost-name=<domain>
–stop-vhost  –vhost-name=<domain>
–set-vhost-mime-types –vhost-name=<domain> –mime-types=<ext=type;…>
–get-vhost-mime-types –vhost-name=<domain>
–get-vhost-log-dir –vhost-name=<domain>
–get-vhost-default-doc –vhost-name=<domain>
–get-vhost-performance –vhost-name=<domain>
–set-vhost-performance –vhost-name=<domain> –bandwidth=<bandwidth> –max-connections=<max_connections>

–add-subdomain –vhost-name=<domain> –subdomain=<subdomain>
–update-subdomain –vhost-name=<domain> –subdomain=<subdomain> [–config=<xml>]
–remove-subdomains –vhost-name=<domain> [–subdomains=<sub1[;sub2;…]>]
–rename-subdomain –vhost-name=<domain> –old-name=<old_sub> –new-name=<new_sub>
–start-subdomain –vhost-name=<domain> –subdomain=<subdomain>
–stop-subdomain –vhost-name=<domain> –subdomain=<subdomain>
–get-subdomain-performance –vhost-name=<domain> –subdomain=<subdomain>
–set-subdomain-performance –vhost-name=<domain> –subdomain=<subdomain>
–bandwidth=<bandwidth> –max-connections=<max_connections>

–add-web-user  –vhost-name=<domain> –web-user=<user> [–no-default-pages]
–update-web-user –vhost-name=<domain> –web-user=<user>
–update-web-users –vhost-name=<domain>
–remove-web-users  –vhost-name=<domain> [–web-users=<user1[;user2;…]>]

–add-fp-user –vhost-name=<domain> –fp-user=<user>
–rename-fp-user  –vhost-name=<domain> –old-user=<user> –new-user=<user>
–remove-fp-user –vhost-name=<domain> –fp-user=<user>]
–update-fp-mail-settings  –domain-name=<domain>
–update-fp-settings –domain-name=<domain> [–subdomain=<sub>]

–list-wellknown-content-types
–get-mime-types –vhost-name=<vhost> [–vdir-name=<vdir>]
–set-mime-types –vhost-name=<vhost> –mime-types=<ext=type;…> [–vdir-name=<vdir>]
–set-global-mime-type –extension=<ext> –type=<type>

–get-error-docs –vhost-name=<vhost> [–vdir-name=<vdir>]
–set-error-docs –vhost-name=<vhost> –error-docs=<xml> [–vdir-name=<vdir>]

–exists-vdir –vhost-name=<vhost> [–vdir-name=<vdir>]
–get-vdir –vhost-name=<vhost> [–vdir-name=<vdir>]
–add-vdir –vhost-name=<vhost> –vdir-config=<xml> [–parent-vdir=<vdir>]
–update-vdir –vhost-name=<vhost> –vdir-config=<xml> [–parent-vdir=<vdir>]
–remove-vdir –vhost-name=<vhost> –vdir-name=<vdir>
–rename-vdir –vhost-name=<vhost> –old-name=<old_vdir> –new-name=<new_vdir>
–get-vdir-subtree –vhost-name=<vhost> [–vdir-name=<vdir>]

–list-wdirs  –vhost-name=<vhost> [–wdir-name=<wdir>]
–remove-wdir –vhost-name=<vhost> –wdir-name=<wdir>
–rename-wdir –vhost-name=<vhost> –old-name=<old_wdir> –new-name=<new_wdir>

–add-extension  –file=<file> –description=<description> [–group=<group>]
–remove-extension  –file=<file>
–allow-extension –file=<file>
–prohibit-extension –file=<file>

–add-protection –vhost-name=<domain> –directory=<dir> [–subdomain=sub]
–update-protection –vhost-name=<domain> –directory=<dir> [–subdomain=sub]
–remove-protections  –vhost-name=<domain> [–directories=<dir1[;dir2;…]>] [–subdomain=sub]

–change-admin-email –email=<admin_email>

–reconfigure-webmail [–webmail=<type>]
–update-webmail-link –domain-name=<domain>

–reconfigure-sqladmin
–update-sqladmin-link –domain-name=<domain>

–reconfigure-sitebuilder
–update-sitebuilder-link –domain-name=<domain>

–update-anon-password –domain-name=<domain>
–update-anon-passwords-all

–get-scripts –vhost-name=<vhost> –app-name=<vdir>
–set-scripts –vhost-name=<vhost> –app-name=<vdir> –scripts=<xml>

–remove-sites-cache

–update-www-prefix –domain-name=<domain> [–subdomain=<sub>]

–set-aspmaxbody –vhost-name=<vhost> –vdir-name=<vdir> [–value=<value of AspMaxRequestEntityAllowed IIS property>]
–set-aspmaxbuffer  –vhost-name=<vhost> –vdir-name=<vdir> [–value=<value of AspBufferingLimit IIS property>]
–get-aspmaxbody –vhost-name=<vhost> –vdir-name=<vdir>
–get-aspmaxbuffer –vhost-name=<vhost> –vdir-name=<vdir>

–set-aspenableserverdebug –vhost-name=<vhost> –vdir-name=<vdir> [–value=<true|false>]
–set-aspenableclientdebug  –vhost-name=<vhost> –vdir-name=<vdir> [–value=<true|false>]
–get-aspenableserverdebug –vhost-name=<vhost> –vdir-name=<vdir>
–get-aspenableclientdebug –vhost-name=<vhost> –vdir-name=<vdir>

debug = false

Warum sollte man bei ASP.net Applikationen debug = false setzen.

Neben Leistungseinbußen gibt es auch andere Probleme bei Produktivservern.

Generell sollte gelten: Wenn eine Website / Applikation produktiv ist, sollte immer der Debug Schalter auf false gesetzt sein.

Den Debug Schalter kann man entweder in der web.config oder direkt als Page Direktive setzen.

web.config-Datei der Anwendung

<compilation debug=“false“ strict=“false“ explicit=“true“ targetFramework=“4.5.1″>

Page Direktive

<%@ Page Debug=“false“ Language=“VB“ AutoEventWireup=“false“ CodeFile=“default.aspx.vb“ MasterPageFile=“~/spaghetticms.master“ Inherits=“_Default“ %>

1) Wenn man debug = true verwendet, werden viel mehr Dateien im temporären ASP.NET Dateiordner erzeugt.

2) Wenn man debug = true verwendet, werden die Webseiten keinen Timeout erzeugen.

3) Wenn man debug = true verwendet, wird die Batch Kompilierung deaktiviert, auch wenn das Batch-Attribut <compilation> auf true gesetzt ist.

4) Das System.Diagnostics.DebuggableAttribute wird zum generierten Code hinzugefügt, welches zu einem massiven Leistungsabfall führen kann. Bei debug = true wird generell das Debuggable zum generierten Code hinzugefügt.

5) Alle Client-JavaScript-Bibliotheken und statischen Bildern, die über WebResources.axd eingesetzt werden, werden bei jedem Seitenaufruf heruntergeladen und nicht lokal im Browser zwischengespeichert. Dies kann sich die Geschwindigkeit auswirken, z.B. wenn Sie Atlas einsetzen oder Steuerelemente wie TreeView / Menü / Validatoren. Beachten Sie, dass der Grund, warum diese Mittel nicht im Cache gespeichert werden, debug = true ist. Bei debug= true wird der Browser Cache ständig geleert.

6) Wenn <compilation debug = „false“ /> gesetzt ist, wird demWebResource.axd Handler automatisch Cache-Regeln hinzugefügt, sodass die Ressource nur einmal vom Client heruntergeladen und dort im Cache gespeichert wird (es wird auch auf alle Proxyservern zwischengespeichert werden). Wenn Sie Atlas für Ihre Anwendung installiert haben, wird es auch automatisch den Inhalt von der WebResources.axd Handler komprimieren. Zusätzlich wird die Größe der JavaScript-Bibliotheken und statischen Ressourcen verkleinert.

7) Wenn das Attribut debug auf true gesetzt ist, werden die Symbolinformationsdateien (PDB-Daten) jedes Mal, wenn der Compiler die ASPX-Seiten kompiliert, neu erzeugt.

Wird während einer Unterbrechung der Debugger angefügt, können keine weiteren Anfragen an die Seite bearbeitet werden. Die Seite ist dann nicht mehr aufrufbar.

Bitte beachten Sie auch: http: //support.microsoft.com/kb/301058

Bootstrap Templates

Bootstrap ist ein beliebtes CSS Framework.

Kostenlose Templates findet man auf: Bootstrap Template (http://startbootstrap.com)

 

 

ASP Tipp 1: Zwischenspeichern Sie häufig verwendete Daten auf dem Webserver

Eine typische ASP-Seite ruft Daten aus einem Back-End-Datenspeicher ab und zeichnet die Ergebnisse dann in HTML (Hypertext Markup Language). Unabhängig von der Geschwindigkeit Ihrer Datenbank ist das Abrufen von Daten aus dem Speicher wesentlich schneller als aus dem Back-End-Datenspeicher. Das Lesen der Daten von einer lokalen Festplatte ist normalerweise ebenfalls schneller als das Abrufen aus einer Datenbank. Aus diesem Grund können Sie die Leistung in der Regel verbessern, indem Sie die Daten auf dem Webserver, entweder im Arbeitsspeicher oder auf der Festplatte, zwischenspeichern.

Beim Zwischenspeichern handelt es sich um einen klassischen Kompromiss zwischen Platz und Zeit. Wenn Sie die richtigen Informationen zwischenspeichern, können Sie beeindruckende Leistungssteigerungen erzielen. Damit ein Cache effektiv ist, muss er Daten enthalten, die häufig wieder verwendet werden. Außerdem muss die Neuberechnung dieser Daten (relativ) teuer sein. Ein Cache voller unnötiger Daten ist eine Speicherverschwendung.

Daten, die sich nicht oft ändern, bieten sich zum Zwischenspeichern an, denn Sie müssen sich keine Gedanken darüber machen, die Daten im Laufe der Zeit mit der Datenbank zu synchronisieren. Kombinationsfeldlisten, Referenztabellen, DHTML-Fetzen, XML-Zeichenfolgen (Extensible Markup Language), Menüoptionen und Sitekonfigurationsvariablen (einschließlich Datenquellennamen (DNS) IP-Adressen (Internet Protocol) und Web Pfade) sind für das Zwischenspeichern geeignet. Beachten Sie, dass es möglich ist, die Präsentation der Daten statt die Daten selbst zwischen zu speichern. Wenn sich eine ASP-Seite häufig ändert und ihre Zwischenspeicherung kostspielig ist (z. B. ihr gesamter Produktkatalog), sollten Sie eine HTML-Voraberstellung in Erwägung ziehen, anstatt sie bei jeder Anforderung neu zu zeichnen.

Wo sollen Daten zwischengespeichert werden? Welche Strategien sollten beim Zwischenspeichern befolgt werden? Daten werden häufig entweder im Arbeitsspeicher oder auf den Festplatten des Webservers zwischengespeichert. Diese Optionen werden in den nächsten beiden Tipps behandelt.

ASP Tipp 2: Zwischenspeichern Sie häufig verwendete Daten in den Objekten „Application“ oder „Session“

Das Application- und Session-Objekt in ASP stellen praktische Container zum Zwischenspeichern von Daten im Arbeitsspeicher bereit. Sie können Daten sowohl dem Application- als auch dem Session-Objekt zuweisen. Diese Daten verbleiben zwischen HTTP-Aufrufen im Arbeitsspeicher. Sitzungsdaten werden auf Benutzerbasis gespeichert, während die Anwendungsdaten für alle Benutzer freigegeben werden.

Wann werden die Daten in die Anwendung oder Sitzung geladen? Die Daten werden häufig beim Starten einer Anwendung oder Sitzung geladen. Um Daten beim Anwendungs- oder Sitzungsstart zu laden, fügen Sie Application_OnStart() oder Session_OnStart(), den jeweils geeigneten Code hinzu. Diese Funktionen müssen sich in der Datei Global.asa befinden. Ist dies nicht der Fall, können Sie sie hinzufügen. Sie können die Daten auch erst laden, wenn sie zum ersten Mal benötigt werden. Fügen Sie Ihrer ASP-Seite zu diesem Zweck Code hinzu, der prüft, ob die Daten vorhanden sind, und sie lädt, wenn dies nicht der Fall ist (oder schreiben Sie eine entsprechende wiederverwendbare Skriptfunktion). Dies ist ein Beispiel der klassischen Leistungsmethode, die als verzögerte Auswertung bezeichnet wird. Bei dieser wird eine Berechnung erst bei Bedarf durchgeführt. Dazu ein Beispiel:

<%

Function GetEmploymentStatusList

Dim d

d = Application(„EmploymentStatusList“)

If d = „„ Then

‚ FetchEmploymentStatusList function (not shown)

‚ fetches data from DB, returns an Array

d = FetchEmploymentStatusList()

Application(„EmploymentStatusList“) = d

End If

GetEmploymentStatusList = d

End Function

%>

Sie können ähnliche Funktionen für jeden benötigten Datenblock schreiben.

In welcher Form sollten die Daten gespeichert werden? Sie können alle Variantentypen speichern, da es sich bei allen Skriptvariablen um Varianten handelt. Sie können z. B. Zeichenfolgen, Ganzzahlen oder Arrays speichern. Sie werden häufig den Inhalt eines ADO-Recordsets in einem dieser Variablentypen speichern. Um Daten aus einem ADO-Recordset zu entnehmen, müssen Sie die Daten manuell Feld für Feld in VBScript-Variablen kopieren. Dies ist mithilfe einer der Beständigkeitsfunktionen für ADO-Recordsets, GetRows(), GetString() oder Save() (ADO 2.5), schneller und einfacher. Ausführliche Einzelheiten hierzu gehen über den Zweck dieses Artikels hinaus, aber im Folgenden sehen Sie eine Funktion, die die Verwendung von GetRows() zum Zurückgeben eines Arrays von Recordsetdaten demonstriert.

‚ Get Recordset, return as an Array

Function FetchEmploymentStatusList

Dim rs

Set rs = CreateObject(“ADODB.Recordset”)

rs.Open “select StatusName, StatusID from EmployeeStatus”, _

“dsn=employees;uid=sa;pwd=;”

FetchEmploymentStatusList = rs.GetRows() ‚ Return data as an Array

rs.Close

Set rs = Nothing

End Function

Die oben dargestellte Funktion könnte durch Zwischenspeichern des HTML-Inhalts dieser Liste statt des Arrays weiter angepasst werden. Dazu ein einfaches Beispiel:

‚ Get Recordset, return as HTML Option list

Function FetchEmploymentStatusList

Dim rs, fldName, s

Set rs = CreateObject(“ADODB.Recordset”)

rs.Open “select StatusName, StatusID from EmployeeStatus”, _

“dsn=employees;uid=sa;pwd=;”

s = “<select name=””EmploymentStatus””>” & vbCrLf

Set fldName = rs.Fields(“StatusName“) ‚ ADO Field Binding

Do Until rs.EOF

‚ Next line violates Don’t Do String Concats,

‚ but it’s OK because we are building a cache

s = s & „ <option>„ & fldName & „</option>„ & vbCrLf

rs.MoveNext

Loop

s = s & „</select>„ & vbCrLf

rs.Close

Set rs = Nothing ‚ See Release Early

FetchEmploymentStatusList = s ‚ Return data as a String

End Function

Unter den richtigen Umständen können Sie ADO-Recordsets selbst im Gültigkeitsbereich des Application- oder Session-Objekts zwischenspeichern. Dabei sind aber zwei Dinge zu beachten:

  1. ADO muss als Freethread-Komponente markiert sein.
  2. Sie müssen einen abgetrennten Recordset verwenden.

Wenn es keine Garantie dafür gibt, dass diese beiden Anforderungen erfüllt sind, sollten Sie ADO-Recordsets nicht zwischenspeichern. Im Tipp zu nicht beweglichen Komponenten und im Tipp weiter unten, in dem vom Zwischenspeichern von Datenbankverbindungen abgeraten wird, werden die Risiken beim Speichern von COM-Objekten im Gültigkeitsbereich eines Application- oder Session-Objekts behandelt.

Beim Speichern von Daten im Gültigkeitsbereich eines Application- oder Session-Objekts verbleiben die Daten in diesem, bis Sie sie durch Programmieren ändern, die Sitzung abläuft oder die Webanwendung neu gestartet wird. Was geschieht, wenn die Daten aktualisiert werden müssen? Um eine Aktualisierung von Anwendungsdaten manuell zu erzwingen, rufen Sie eine ASP-Seite auf, auf die nur der Administrator Zugriff hat, und die die Daten aktualisiert. Sie können Ihre Daten stattdessen auch in regelmäßigen Abständen mithilfe einer Funktion aktualisieren. Das folgende Beispiel speichert einen Zeitstempel mit den zwischengespeicherten Daten und aktualisiert die Daten nach einem bestimmten Zeitraum.

<%

‚ error handing not shown…

Const UPDATE_INTERVAL = 300 ‚ Refresh interval, in seconds

‚ Function to return the employment status list

Function GetEmploymentStatusList

UpdateEmploymentStatus

GetEmploymentStatusList = Application(„EmploymentStatusList“)

End Function

‚ Periodically update the cached data

Sub UpdateEmploymentStatusList

Dim d, strLastUpdate

strLastUpdate = Application(„LastUpdate“)

If (strLastUpdate = „„) Or _

(UPDATE_INTERVAL < DateDiff(„s“, strLastUpdate, Now)) Then

‚ Anmerkung: Hier können zwei oder mehr Aufrufe eingehen. Das ist in Ordnung und führt

‚ lediglich zu einigen unnötigen Abrufen (dies kann umgangen werden)

‚ FetchEmploymentStatusList function (not shown)

‚ fetches data from DB, returns an Array

d = FetchEmploymentStatusList()

‚ Update the Application object. Use Application.Lock()

‚ to ensure consistent data

Application.Lock

Application(„EmploymentStatusList“) = Events

Application(„LastUpdate“) = CStr(Now)

Application.Unlock

End If

End Sub

Ein weiteres Beispiel finden Sie im Artikel „World’s Fastest ListBox with Application Data“.

Beachten Sie, dass vom Zwischenspeichern von großen Arrays in Session- oder Application-Objekten abgeraten wird. Bevor Sie auf ein Element des Arrays zugreifen können, setzt die Semantik der Skripterstellungssprachen voraus, dass das gesamte Array kopiert wird. Wenn Sie z. B. ein aus 100.000 Elementen bestehendes Zeichenfolgenarray, das US-amerikanische Postleitzahlen lokalen Wetterstationen zuordnet, in einem Application-Objekt zwischenspeichern, muss ASP zuerst alle 100.000 Wetterstationen in ein temporäres Array kopieren, bevor Sie auch nur eine Zeichenfolge extrahieren können. In diesem Fall empfiehlt es sich, zum Speichern der Wetterstationen eine benutzerdefinierte Komponente mit einer benutzerdefinierten Methode zu erstellen oder eine der Wörterbuchkomponenten zu verwenden.

Zum Schluss noch ein weiterer Kommentar nach dem Motto „das Kind mit dem Badewasser ausschütten“. Arrays stellen schnelle Suche und Speicherung von zentralen Datenpaaren bereit, die im Arbeitsspeicher zusammenhängen. Das Indizieren eines Wörterbuches ist langsamer als das Indizieren eines Arrays. Sie sollten sich für die Datenstruktur entscheiden, die unter den gegebenen Umständen die beste Leistung bietet.