2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte übertragen - siehe i.nicht mit Twitter verbunden
2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Xing senden. Schon beim Aktivieren werden Daten an Dritte übertragen - siehe i.nicht mit Xing verbunden
2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an LinkedIn senden. Schon beim Aktivieren werden Daten an Dritte übertragen - siehe i.nicht mit LinkedIn verbunden
ALGORITHMUS Schaltjahr
Beschreibung:
das Programm soll testen, ob eine Folge von Jahren jeweills ein Schaltjahr ist
wenn das Jahr größer 1582 ist
wenn das Jahr durch 4, aber nicht durch 100 teilbar ist, handelt es sich um ein Schaltjahr
ist das Jahr durch 400 teilbar, handelt es sich ebenfalls um ein Schaltjahr
Daten:
Jahr (Startwert)
Jahr (Endwert)
Schrittweite
Kern-(Algorithmus):
Einlesen von "Startwert"+"Endwert"+"Schrittweite"
WENN "Startwert"<1582 ODER "Startwert">="Endwert" ODER Schrittweite<=0
DANN Fehler-Meldung
ANSONSTEN
FÜR "Startwert" BIS "Endwert"
WENN ("Startwert"/4 ohne Rest UND "Startwert / 100 mit Rest) ODER ("Startwert" / 400 ohne Rest)
DANN Ausgabe: "Ja"
ANSONSTEN
Ausgabe: "Nein"
ENDE WENN
ENDE FÜR
ENDE WENN
C-Programm:
#include"stdio.h"int main(void){int jahr_startwert,jahr_endwert,schrittweite;
printf("\n\tK a l e n d e r\n");
printf("\nBitte den Startwert (Jahrszahl) eingeben: ");
scanf("%d",&jahr_startwert);
printf("Bitte den Endwert (Jahreszahl) eingeben: ");
scanf("%d",&jahr_endwert);
printf("Bitte die Schrittweite (Jahre) eingeben: ");
scanf("%d",&schrittweite);/* Beginn des gregorianischen Kalerndes - 1582*/if(jahr_startwert <1582|| jahr_startwert >= jahr_endwert || schrittweite <=0){
printf("\nFalsche Angabe!");}else{
printf("\nJahr | Schaltjahr?");
printf("\n------------------");for(jahr_startwert; jahr_startwert <= jahr_endwert; jahr_startwert=jahr_startwert+schrittweite){if((jahr_startwert %4==0)&&(jahr_startwert %100!=0)||(jahr_startwert %400==0)){
printf("\n%d | Ja",jahr_startwert);}else{
printf("\n%d | Nein",jahr_startwert);}}
printf("\n\n");}return(0);}
2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte übertragen - siehe i.nicht mit Twitter verbunden
2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Xing senden. Schon beim Aktivieren werden Daten an Dritte übertragen - siehe i.nicht mit Xing verbunden
2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an LinkedIn senden. Schon beim Aktivieren werden Daten an Dritte übertragen - siehe i.nicht mit LinkedIn verbunden
So langsam möchte ich auf die Fragen, welche bisher aufgetaucht sein könnten eingehen und mit der Beschleunigung der Webseite anfangen, daher starten wir mit der Komprimierung.
Alle neuen Browser (ab IE6) unterstützen komprimierte Dateien, man kann sich dies so ähnlich vorstellen, wie in dem diesem Proxy-Beispiel, wo die Dateien serverseitig komprimiert werden und vom Client, in unserm Fall nun der Browser wieder dekomprimiert werden. Aber dazu kommen wir gleich. Das Problem ist, dass Bilder bereits komprimiert sind und falls diese im Nachhinein noch einmal passiert, diese sogar größer werden können als zuvor, daher versucht man diese bereits bei der Bereitstellung in der optimalen Dateigröße anzubieten, zudem sollte man vermeiden, dass zu viele kleine Dateien vom Server geladen werden müssen, da zu viele Verbindungen bzw. Anfragen sich auch seht negativ auf die Performance einer Webseite auswirken.
2.1) Bilder komprimieren
2.1.1) Bilder Sprites
Durch viele kleine Icons / Menü-Bildern kommen viele Serveranfragen zustande, welche man durch ein größeres Bild, welches dann wiederum mit css so bearbeitet werden kann, dass man bestimmte Bildabschnitte ansprechen kann, ersetzten könnte.
Es folgt noch ein Beispiel, um das Prinzip zu verstehen…
alte CSS-Regeln:
#header {background: url(bild1.jpg) top left repeat-x; height:80px;}
ul.menu li {background: url(bild2.jpg) top left repeat-x; height:15px;}
bild1.jpg und bild2.jpg sind jeweils 1px breit. Waf der folgenden Webseite → Sprite-Generator ← kann man diese beiden Dateien nun zu einer Sprite-Datei zusammenfassen und herunterladen bzw. auf Webserver hochladen.
Dieses Sprite-Bild wird nun für alle Elemente, die einen im Sprite enthaltenen Hintergrund haben eingefügt:
#header, ul.menu li {background-image:url(bg_sprite.png);}
Mithilfe der im Generator angegebenen Regeln, werden die alten CSS-Regeln ersetzen:
Dies fällt bei größeren Bildern mehr ins Gewicht, jedoch kann auch die Komprimierung von solchen Logos etc. schon einige hundert MB im Monat einsparen, zumal PNG in Gegensatz zu JPEG eine verlustfreie Neukomprimierung unterstützt.
Als alternative zu all dieses serverseitigen Möglichkeiten kannst du deiner Bilder natürlich auch mit einem Bildbearbeitungsprogramm (z.B. Paint.NET) öffnen und z.B. optimiert für Webseiten abspeichern.
2.2) JavaScript/CSS komprimieren
2.2.1) JavaScript/CSS komprimieren – serverseitig
Hier werde ich kurz zeigen wir du deine JS- und CSS-Dateien nicht nur komprimieren kannst, um die Ladegeschwindigkeit deiner Webseite zu verbessern, sondern auch noch optimierst, so dass diese schneller ausgeführt werden. Der CSS-Kompressions-Algorithmus verwendet zudem einen Satz von fein aufeinander abgestimmten reguläre Ausdrücke, um die CSS-Datei zu komprimieren.
[stextbox id=”info”]Bei mir hat das kombinieren von einigen JS- und CSS-Dateien negative Auswirkungen gehabt, so haben einige JS nicht mehr funktioniert, zudem sollte man bedenken, dass einige Dateien nicht auf jeder Webseite benötigt werden und daher auch ruhig später geladen werden können, sobald ein Besucher z.B. auf Kommentare klickt.[/stextbox]
Eine weitere Methode besteht darin, die Daten selber gar nicht zu verändern, sondern diese direkt und nach einer bestimmten Zeit neu von einem Server komprimieren zu lassen, diese Methode hat daher auch wieder nachteiligen Einfluss auf die Ladegeschwindigkeit, da ein weitere Request, DNS-Lookup usw. hinzukommt. Jedoch kann man an diesen Online-Dienst auch mehrere CSS- bzw. JS-Dateien gleichzeitig übergeben. Ob dies wirklich die Performance steigern kann müsste man im Einzellfall ausprobieren.
Serverseitige Komprimierung und somit eine Reduzierung der zu Übertragungen Datenmengen von 40 – 70 % sind hier zu erreichen, zudem kannst du mithilfe der folgenden Konfigurationen gleich mehrere Webseiten, welche auf dem selben Server laufen optimieren.
ohne gzip-Kompression:
mit gzip-Kompression:
Aktiviere mod_deflate (gzip) – serverseitig
Diese Art der Komprimierung macht natürlich nur bei Dateien Sinn, welche auch komprimiert werden können z.B. HTML, CSS oder Javascript …
a2enmod deflate
… dieser Befehl kann unter anderen Distributionen anders aussehen z.B.: BSD
Mithilfe von gzip (DeflateCompressionLevel) kann man verschneide Kompressions-Level einstellen, wobei 1 die schnellsten Komprimierung (weniger Kompression) und 9 die langsamste Komprimierung (beste Kompression) ist. Die Standard-Kompressions-Level ist 6. da eine zu hohe Kompression auf Kosten der der Systemleistung geht, ggf. kann man diesen Wert anpassen, wenn man noch genügend Ressourcen frei hat.
Nun müssen wir unsern Webserver neu-starten, um die Konfiguration zu übernehmen.
Wer noch apache und nicht apache2 verwendet sollte “mod_gzip” anstelle von “deflate” ansehen, jedoch werde ich nicht weiter auf die veraltete Apache-Version eingehen, wenn noch jemand den alten “Apache Web-Server” einsetzt, soll man ggf. ein Update auf apache2 durchführen…
“Nur unter Apache 1.3 ist “mod_gzip” effektiver ab “Apache 2.x” sollte man “mod_deflate” verwenden.”
Es gibt auch noch die Möglichkeit Dateien serverseitig im Vorhinein zu komprimieren und in einer .htaccess anzugeben, welche Dateien bzw. Dateiendungen vom Browser wieder dekomprimiert werden müssen. Ich selber habe auch eine Mischung aus den verschienden Komprimierungsverfahren gewählt, so habe ich sehr große JS-Dateien im Vorhinein folgendermaßen komprimiert, so dass der Server dies nicht jedes mal machen muss, zudem hat dieses Verfahren den großen Vorteil, dass man die negative Auswirkung des hohen Komprimierungslevel, auf die Systemauslastung umgeht.