ISAPI CMS – Content management system

Konzept und Strukturen

In diesem Beitrag möchte ich euch mein Konzept für ein schnelles und nicht Ressourcen hungriges CMS näher erklären, übrigens ist es die Basis für diesen Webauftritt.

Was verbirgt sich dahinter, wo liegen die Vorteile und wie funktioniert es.

Das ISAPI - CMS mit all seinen Bestandteilen wurde in Object-Pascal geschrieben, um gehobenen Sicherheitsansprüchen gerecht zu werden. Das heißt, es werden nicht wie bei anderen Systemen üblich, externe Module wie z.B. zum Zippen, zur Bildbearbeitung oder zum E-Mail-Versand eingesetzt.

Leistungsmerkmale und Vorteile der Umsetzung eines Webauftritts auf Basis dieses ISAPI -CMS.

Client-seitige Systemunabhängigkeit

Das CMS wurde Browser basiert entwickelt, um auf allen gängigen Systemen und allen aktuellen Browsern eine Pflege der Seiteninhalte gewährleisten zu können.

URL-Maskierung / URL-Rewriting

Im kompletten CMS wird mit Sprechenden URLs z. B. http://www.homepage.de/mein-produkt gearbeitet, das klassische URL-Rewriting wie es in allen gängigen CMS passiert entfällt, denn es wird nativ durch den ISAPI-Filter erledigt.
Jede Seite hat einen sprechenden Namen, falls er überschrieben wird ist er weiterhin erreichbar, wird jedoch auf den neuen Namen weitergeleitet; so bleiben auch umbenannte Ziele noch erreichbar, bis der Name wieder neu vergeben wird!
Der Titel der Seite wird zur Adresse und erhöht ihr Auffinden bei Google oder andern Suchmaschinen!

WYSIWYG"What you see is what you get"

Der stark im Umfang erweiterte Xinha-Editor ermöglicht eine problemlose Arbeit mit allen Gestaltungsmitteln die einem Redakteur im Internet zur Verfügung stehen, ohne dass HTML-Kenntnisse erforderlich wären! Der Funktionsumfang kann schon mit kleinen Erweiterungen im Stylesheet des Auftrittes ohne weiteren Programmieraufwand vergrößert werden. Integriert ist aber auch ein HTML-Quellcode-Editor, falls Sie wie die Profis arbeiten möchten.

Image to Web – „Automatisierte Bildoptimierung für das Internet“

Unmittelbar nach dem File-Upload (Datei hochladen) wird - falls erforderlich - eine Bild-Konvertierung/Optimierung durch den Hintergrund-Service (Daemon) durchgeführt. Mögliche Eingangs-Formate sind JPEG, GIF, PNG und Bitmap. Falls das Ursprungsbild in CMYK  vorliegt,  wird automatisch eine Konvertierung in RGB  vorgenommen. Um die Datenmengen beim Laden der Seite möglichst gering zu halten, wird das Bild je nach Verwendungszweck in der Seite auf die passenden Werte vom ISAPI-Filter skaliert, dabei werden keine Bilder in den benötigten Größen gespeichert sondern beim Abruf wird jeweils aus dem Originalbild das passende Bild generiert, das hört sich zwar langsam an, aber als Beispiel benötigt die Generierung eines Thumbnails aus einer JPG-Datei auf diesem Server nicht mal eine Millisekunde.

Realtime Editing

Beiträge, Artikel, Meldung usw. sind sofort nach dem Speichern im Netz sichtbar. Natürlich bietet das CMS auch eine zeitgesteuerte Veröffentlichung, die durch die Eingabe eines „gültig von“- und „gültig bis“-Wertes aktiviert wird.

Web Accessibility – Barrierefreiheit

Xinha Editor mit Sprachen-Auswahlbox und Abkürzungsdialogzoom

Xinha Editor mit Sprachen-Auswahlbox und
Abkürzungsdialog

Sowohl die auf Seiten bezogene als auch die auf Wort(e) bezogene Zuordnung von Sprachen ist möglich. Des Weiteren können Abbreviations (Abkürzungen) im Text oder Global für das System definiert werden, so dass sie automatisch gesetzt werden, ohne das ein weiterer Arbeitsschritt erforderlich wird. Bearbeitete fremdsprachige Worte und Textpassagen sind durch Rot-Kennzeichnung mit den Sprachen-Kürzel im Editor sofort zu erkennen. Abkürzungen sind durch eine Sprechblase mit Fragezeichen und gestrichelte Linie gekennzeichnet, beim mouseover (Mouse-Cursor über der Abkürzung) erscheint die ausführliche Schreibweise.

Testen Sie doch einfach einmal unabhängig die Barrierefreiheit Ihrer Homepage unter wave.webaim.org.

W3C-Konformintät

Durch Generierung der Seite als Objektstruktur, ist ein Fehler im HTML-Code (also z.B. das fehlen des schließenden Tags) nicht möglich dadurch wird eine sehr gute W3C-Validität erreicht. Testen Sie doch einmal die Qualität Ihrer Homepage unter validator.w3.org.

SEO – Search Engine Optimization (Suchmaschinenoptimierung)

  • Jeder Seite kann ein individueller Titel, eine Meta-DescriptionMeta-Keywords, ein Meta-Subject, Autor und eine Language-Declaration (Sprachinformation) zugeordnet werden.
  • Verhinderung von Duplicate Content (doppelten Inhalten).
  • Im Seitenkonzept werden keine Frames oder Tabellen eingesetzt.
  • Voll automatisch wird eine XML-Sitemap erstellt.
  • Es erfolgt eine HTML5 / XHTML- 1.0- Transitional konforme Darstellung der Seite, siehe W3C-Konformität.
  • Gestaltungsinformationen und Inhalt werden strikt getrennt. Gestaltungsinformationen werden in einem separaten Stylesheet und nicht im Content (Seiteninhalt) zur Verfügung gestellt.
  • Durch komplexes HTML-Encoding entfallen Encoding Probleme, die sonst z. B. bei UTF-8 oder ISO-8859-1 auftreten können.
  • Geo-Meta-Tags werden eingebunden.
  • Eine Robots.txt und ein Favicon.ico etc. stehen automatisch für jeden Auftritt bereit.

Geschwindigkeit/PerformancePage Speed

In den HTTP-Headers werden Last-Modified und Etag (ein Hash-Wert über den Seiteninhalt) auch bei dynamischen Inhalten mitgeführt, falls der aufrufende Browser oder Crawler (Robot, Suchmaschine) Content-Encoding unterstützt wird, je nach Vorgabe ein deflate oder gzip (Komprimierung des Seiteninhalts) durchgeführt, so dass ein minimaler Traffic und eine maximale Performance erzielt wird.

Session Kontrolle

Eine Session (Sitzungs-) Kontrolle, die nicht im Servercache stattfindet, sondern intern geregelt ist garantiert stabile Sitzungen auch über kurze Unterbrechungen hinweg z.B. durch Update des Servers.

Seiten-Module

Seiten-Module sind vorhandene vordefinierte Methoden der Darstellung von Seiteninhalten, dessen Aussehen durch Anpassungen im Stylesheet individuell gestaltet werden kann. Durch das festlegen auf eine bestimmte Art des Seiten-Moduls ist es möglich nur die Eingabemöglichkeiten anzubieten, die Sinn machen und nicht den Bearbeiter durch eine Vielzahl von überflüssigen Möglichkeiten zu verunsichern.

  • Beitrag: Standard Modul, Kind-Elemente sind frei zu sortieren
  • Login: Anmeldeseite für einen geschlossenen Benutzerbereich
  • Form: Kontaktformular löst eine E-Mail an einen voreingestellten Empfänger aus
  • Suche: Suchseite und Ergebnisseite der Suche, die Suchergebnisse werden aus einem Volltextindex über Microsofts Indexserver generiert und mit unterschiedlichen Methoden und Sortierungen zur Verfügung gestellt
  • Sitemap:Dynamische Sitemap als strukturierte Übersicht der Navigationshierarchie Ihrer Website., besonders bei großen Auftritten zu empfehlen
  • Impressum: System-Seite mit besonderer Bedeutung (kann aus Sicherheitsgründen nicht gelöscht werden)
  • System:Frei gestaltbare Fehlerseiten; unterschieden wird hier in „nicht gefunden“, „nicht mehr gütig“ und „nur im geschlossenen Bereich sichtbar“
  • Blog: Blog mit Verschlagwortung zur Filterung nach Themen
  • Blog Eintrag: Eigentlicher Eintrag im Blog
  • ...

Leistungsmerkmale der Module

Mobile Website www.gocher.me

Mobile Website www.gocher.me

  • Responsive / Mobile Wesite (Smartphone/Tablet)
    durch Nutzung von Media Queries ist der Webauftritt auch mobil erreichbar!
  • RSS-Feed / Atom-Feed, auch mehrere pro Website, als weitere Möglichkeit zur Verbreitung von Meldungen
  • vCard: elektronische Visitenkarten (standardisiert durch das Internal Mail Consortium (IMC) für gängige Adressverwaltungen und E-Mail Clients
  • iCal: elektronischer Termin-/Kalendereintrag für gängige Terminverwaltungen wie iCal (Apple), Outlook (Microsoft) oder auf PDAs und Mobiltelefonen
  • Breadcrumbs: Brotkrumen-Navigation
  • Social Bookmarks: Lesezeichen Funktion für Social Bookmarking bei  Social News und Social Network Diensten
  • Teaser-System: Immer aktive oder auch nur zuschaltbare Kästen auch durch Regeln angewendet auf den Inhalt wie z.B. Bilder-Galerie im Inhalt erzeugt Teaser-Box mit den Bildrechten oder Keyword löst Teaser-Box mit Meldung aus.
  • angeheftete Sites unter Windows 7
  • Administration: Konfiguration der Haupteinstellungen, Benutzerverwaltung,
  • Schnelle Volltextsuche nach Gewichtung und Aktualität über nativen Index, auch über PDF Dateien deren Inhalt nicht geschützt ist

Als erstes wollte ich unabhängig von Datenbanken sein und möglichst ganz auf sie verzichten, das ist mir auch bis jetzt gelungen! Anstelle von Datenbanken benutze ich zu Datenhaltung das Filesystem, die Einzelnen Daten werden in Form von HTML, XML und INI-Dateien abgelegt.

/ (root):

Alle Daten liegen außerhalb des Webserver-Root-Verzeichnisses (bei mir /wwwroot), in einem Ordner (bei mir /index),

In globalen Ordner liegen nur die global benötigten Dateien:

  • daemon.exe Hintergrund Service der alle Arbeits-Funktionen der Auftritte übernimmt., wie z.B. Aktualisierung des Suchindexes, Löschen abgelaufener Sessions, JS & CSS Minimizer und Image-Optimizer
  • isapi_filter.dll Webserver-Erweiterung zum optimieren des Ablaufs im Server auch für statische Inhalte
  • RecyleAppPool.exe Programm zum Neustart eines Webservices oder des ganzen Webservers
  • wkhtmltopdf.exe Programm zum Speichern von Internet-Seiten als PDF-Datei
  • jpegtran.exe Programm zum Optimieren von JPEG-Dateien
  • optipng.exe Programm zum Optimieren von PNG-Dateien
  • pdftohtml.exe Programm zum Extrahieren von PDF-Datei-Inhalten als HTML-Dateien
  • und ein paar weitere DLLs die von den Programmen benötigt werden

/index:

In diesem Verzeichnis (/index) habe ich dann weitere Unterverzeichnisse angelegt:

  • /gocher das Projekt-Verzeichnis mit den Seiten diese Auftrittes
  • /gocher__history das Backup-Verzeichnis zur Sicherung der Seiten dieses Auftrittes (Historie)
  • /gocher-downloads das Index-Verzeichnis für die Downloads (hier werden alle PDF-Dateien als HTML -Dateien zur besseren Indizierung abgelegt, also für die Suche
  • /gocher-pdf das PDF-Versions-Verzeichnis mit den PDF-Versionen der Seiten dieses Auftritts

In diesem Verzeichnis liegen aber auch die folgenden  Dateien:

  • browscap.ini Datei zur Useragent Analyse (also Browser-Erkennung)
  • isapi.ini Konfigurations-Datei des Internet-Auftrittes
  • isapi.user.ini Benutzer und Benutzergruppen Daten des Internet-Auftrittes
  • gocher.dat Volltextindex des Internet-Auftrittes
  • gocher-files.txt Überprüfungsliste von Dateien (nähere Erklärung später, falls dann noch nötig)

Im Ordner /gocher liegt eine Datei index.xml in der die komplette Struktur der Internetseite gespeichert ist, eine teaser.xml in der alle Boxen/Kästen abgelegt sind und alle Seiten der Struktur in Form von HTML-Dateien. Existieren Seiten mit mehren Meldungen wird ein Unterverzeichnis mit selben Namen angelegt und in diesem liegen dann die Meldungen wiederum als HTML-Dateien!

/wwwroot:

Im Verzeichnis /wwwroot liegen dann noch die Verzeichnisse die auch direkt über den Webserver erreichbar sein müssen:

  • /code das Verzeichnis in dem die Code-Beispiele liegen
  • /downloads das Download-Verzeichnis des Internet Auftrittes
  • /fonts das Zeichensatz-Verzeichnis z.B. für den Icon-Font
  • /media das Verzeichnis mit Medien-Dateien (Audio, Video, Bilder ...)
  • /scripts das Verzeichnis mit den JavaScripts
  • /styles das Verzeichnis mit den Stylesheets

Es liegen aber auch hier ein paar Dateien:

  • isapi.dll die Komplette Logik zur Generierung der dynamischen Seiteninhalte in Form einer ISAPI-DLL
  • gocher.ico das favicon.ico des Internet-Auftritts
  • gocher.png / gocher-precomposed.png die PNGs welches zur Generierung aller sonstigen benötigten Icons herangezogen werden (wie z.B. für RSS-Feeds und apple-touch-icons)

Einige Dateien erscheinen so als lägen sie hier, sie werden jedoch dynamisch erzeugt

  • robots.txt die Erlaubnis-/Verbotsliste für Suchmaschinen
  • sitemap.xml die Google-Sitemap für Suchmaschinen, wird auch in der robots.txt referenziert
  • opensearch.xml der OpenSearch-Format File zum Einbinden der eigenen Suche in das Suchfeld des Browsers
  • crossdomain.xml die Cross-domain policy  regelt Domain übergreifende Zugriffe 
  • rss.rdf und atom.xml die News-Feeds mit den aktuellsten Einträgen/Änderungen auf der Website
  • *.appcache und *.webapp die Manifest-Dateien für Local Storage und für Firefox OS App's
  • und wie schon erwähnt alle dynamisch generierten Icons

/sessions:

Hier liegen die Session-Daten in Form von INI-Dateien.

/logging:

Hier liegen alle Logging-Dateien die aus den eigenen Komponenten erzeugt werden

Autor: , veröffentlicht: , letzte Änderung:

Kontakt

Service Infos

CMS Info
UDOs Webserver

0.3.1.24

All in one Webserver

Udo Schmal

Sa, 21 Okt 2017 00:30:10
Development Info
Lazarus LCL 1.9.0.0

Free Pascal FPC 3.1.1

OS:Win64, CPU:x86_64
Hardware Info
Precision WorkStation T3500

Intel(R) Xeon(R) CPU W3530 @ 2.80GHz

x86_64, 1 physical CPU(s), 4 Core(s), 8 logical CPU(s), 2800 MHz