__pycache__/-Ordner und *.pyc/*.pyo-Dateien löschen

Für den Fall, dass ihr wie ich einmal vergessen habt in eure .gitignore :

__pycache__/
*.py[cod]

einzutragen und nun auf einmal diese Folder auch auf eurem Deploymentsystem habt oder sie bei euch lokal entfernen wollt, um dann zu commiten, dann gebt das hier ein:

find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf

Patreon – eine andere Art kreative Arbeit zu finanzieren und zu fördern

Patreon ist eine Plattform aus den USA, die es jedem ermöglicht Autoren, Künstler Musiker, Podcaster, YouTuber usw. seiner Wahl mit einer kleinen oder größere regelmäßigen spende zu versorgen.

Dadurch ist es eine gute Möglichkeit sich für alle Arten von Autoren sich ohne der Werbung zu unterwerfen zu finanzieren. Ich habe mir dort auch ein Profil für mein Projekt genughaben.de eingerichtet und habe seitdem dort auch keine automatische Werbung mehr. Sofern euch meine Seite gefällt und ihr mich unterstützen könnt, würde ich mich darüber freuen! Mein Profil findet ihr hier:

Seid ihr selbst Künstler, Autor, Musiker, Podcaster, YouTuber o.ä.? Dann meldet euch doch selbst auf Patreon an und schreibt euren Fans, dass sie euch darüber unterstützen könnt! Patreon bietet dazu viel und gute Unterstützung an, damit ihr damit auch Erfolg habt und ihr in Zukunft weniger von Werbung abhängig seid!

Viel Spaß und Erfolg mit eurem Projekt und danke für eure Unterstützung!

Frank

App-Idee: Bücher in Buchläden (leichter) finden oder allgemeiner: Text in Bildern durchsuchen.

Bücher in Buchläden (leichter) finden

Immer wieder stehe ich vor Bücherregalen und würde zugern nach Stichworten suchen und dann entweder einen passenden Titel oder eine Empfehlung bekommen. Dazu fielen mir ein:

  • Foto machen unBücher in Buchläden (leichter) findend dann Suchanfragen (am liebsten per voice) auf das Bild schicken. Gefragte oder passende Bücher werden dann angezeigt.

App der Buchhandlung, die mit immer aktuellen Bildern der Bücherregale gefüllt werden. Nun kann ich als Besucher die Bücherregale durchsuchen – ggf. sogar von zuhause.

Da in einer Datenbank idealerweise auch Metadaten, Autorenname und Stichworte zum Inhalt liegen können diese für die Suche herangezogen werden.

Text in Bildern durchsuchen.

Manchmal möchte ich nach Begriffen in einem physischen Buch suchen. Cool fände ich da eine App, der ich meine Suchbegriffe eingeben kann. Mit meiner Telefonkamera filme ich dann über die Seiten und mir werden die passenden Begriffe gehighlighted. Manchmal netter als das Buch Zeile für Zeile mit den Augen durchzugehen.

Meetup: PyData Hamburg – Spring Edition

Gestern war ich auf dem PyData Meetup in Hamburg bei Grunar + Jahr am Baumwall.

Ich werde her keine vollumfängliche Beschreibung, sondern nur jeweils das berichten, was ich am spannensten fand.

Es gab drei Vorträge:

1. Irina Vidal Migallón: Poking holes in your deep learning vision model.

Irina stellte Herausforderunge bei der Entwicklung von Bilderkennungsverfahren vor. Es ging dabei um Robustheit, die sie durch die vier Begriffe Evaluaton, Debugging, Interpretability und Adversarial* umriss. Irina arbeitete bereits im Bereich Medizin und Mobilität und wendete dort Bilderkennung an. In der Pause unterhielten wir uns u.a. über Ansätze “unbekannte” in Klassifikationen zu erkennen. Sie schlug Siemese Networks vor, die ich auch schon einmal ins Auge gefasst hatte – es ist aber immer gut das noch einmal von jemanden bestätigt zu bekommen 🙂

2. Matti Lyra: Research into production: automating travel bookings using current NLP research.

Matti erzählte über NLP zur Detektierung von Hotelbuchungen aus E-Mails. Ich fand den Vortrag technisch sehr spannend! Es ging darum aus E-Mails anfragen für Hotels zu extrahieren. Für mich nicht so relevant – da ich lieber ein Formular verwende, dass für mich gleichzeitig wie eine Checkliste fungiert und für mich so sicher stellt, dass ich nichts wichtiges vergessen habe. Für einen vielreisenden Businessman aber vielleicht genau das richtige!

Christopher Werner: Prediction of Status Changes in Software Tests.

Auch ein spannender Vortrag. Technisch betrachtet. Es ging darum zu erkennen, ob be einen Commit der Status eines Tests sich ändert. Hier war allerdings der Use Case für mich nicht wirklich nachvollziehbar. Problem des Kunden war: die Tests brauchen 1,5 Tage bis sie durchlaufen. Fair enough. Aber warum dann nicht die Anwendung in Services mit jeweils kleineren Testsuits unterteilen? Und wenn das keine Option ist: warum nicht an Teilen des Codes entwicklen und nur die dafür relevanten Suites ausführen? Immer noch sicherer als die Endgenauigkeit von circa 80% des vorgestellten Modells: denn ein mit 20%iger Wahrscheinlichkeit fehlerhaftes Update würde ich nicht deployen wollen…

Key Takeaways waren für mich:

  • automatisiere deine Workflow so gut wie möglich
  • Evaluiere und visualisiere dein Training (z.B. mit Tensorboard) und die Modellperformance
  • verwende für die Modell-Validierung das Gerät, die Umgebung und Kennzahlen (z.B. precision oder recall), die später beim Deployment verwendet werden und für den Anwendungsfall am relevantesten sind.
  • schauen worauf dein Modell schaut: Stichwort “Deconvolution” – erkennt das Modell wirklich das, was wir wollen und vor allem aus erwarteten Gründen? Wird der Wolf im Bild erkannt oder nur der Schnee im Hintergrund? Ein Tool dafür ist Lime. Dazu gibt es dort ein cooles Video. Ein gutes Paper dazu ist: Why should I trust you?
  • reichere deinen Datensatz neben augmentierung durch adverserial samples an (siehe Explaining and Harnessing Adversarial Examples von Goodfellow 2014). Es werden “zufällige Muster” deinen Trainingsbildern hinzugefügt, die für die Erkennung anderer Bildklassen optimiert sind. Dein Modell muss daher dann lernen, warauf es in den Trainingsbildern “wirklich ankommt”.  Dafür hilft das Tool cleverhans.
  • Ein für das Trainieren von Modellen für autonomes Fahren oft verwendeter Datensatz ist der City Scape Dataset.
  • Ein spannedes System zum Ausprobieren der richtigen Hyperparameter ist hyperband. Hier arbeitet im Hintergrund ein Multi-armed bandit, um nach und nach für definierte Rampen von Hyperparametern die optimale Kombination zu finden.

Selbst sprechen:

Auch interessant fand ich:

  • Wer will kann sich dort jederzeit mit einem Vortragsthema melden und bei einer neuen Veranstaltung sprechen.
  • Auch kürzere Talks (bis 5min) sind am Ende in der Section “Lightning Talks” immer möglich.

Missing Functionalities Teil 1 – Heute: Google Maps.

Ich rege mich im Alltag immer wieder über aus meiner Sicht technische Probleme auf, die einfach nicht gelöst werden. Das meiste davon ist nicht Kriegsentscheidend. Wenn man aber bedenkt, dass unsere Gesellschaft eben an vielen Stellen durch inkrementelle Beschleunigung besser geworden ist, sind sie aber dennoch eine Diskussion wert. Ich werde immer wieder mal eine Sache in den Raum stellen, die mir auf den Geist geht. Und bin auf eure Meinungen bzw. Kommentare dazu gespannt.

Heute: Google Maps.

1. Man bekommt vom Google Assistant auch für Kontakte für die man die Adresse hinterlegt auf Anfrage keine Route. Frage ich etwa:
* Ok Google.
* Zeige mir den kürzesten Weg zu bekomme ich eine Google Suche als Ergebnis.

What? Das kann doch wohl nun echt nicht so schwer sein, Dr. Google. Löst das bitte mal. Nicht immer nur von Innovationgeschwindigkeit reden, sondern auch mal machen!
Nicht falsch verstehen, liebe Google, ich finde euch klasse, aber manche Funktionen könntet ihr einfach echt noch verbessern! Meiner Meinung nach könnte da helfen euer Image als Runaways in der Techsphäre zu stabilisieren!

2. Ich reise beruflich häufiger. In den jeweiligen Städten bin ich aber wiederholt an denselben Orten. Dennoch ist die Angabe “Arbeit” immer die gleich für einen meiner Einsatzorte in Hamburg. Nie aber in dem für Frankfurt, Desden oder wo auch immer. Gleichzeitig könnten die letzten Suche sich am jeweiligen Aufenthaltsort orientieren. Wenn ich eben in Frankfurt bin, dann interessieren mich meine Ortssuchen aus Hamburg eher weniger. Richtig genial wären ja Ortsprofile, die man über einen Button und dann ein Dropdown auswählen könnte.

Zusammengenommen würde mir beides pro Monat bestimmt 5 Minuten sparen. Und noch mehr Nerven, denn ich ärgere mich über beides sicher länger als die eingesparte Zeit. Auf 1.000.000 Menschen, die das auch interessieren könnte wären das pro Monat dann also 1041 Tage. Das ist schon ne Menge Holz. Würde sich also schon lohnen das einzubauen.

Danke und beste Grüße
Frank

Zu Besuch auf dem Spatial Finance Initiative Meetup in London

Image Credit: NASA

Ich war am 1. Februar 2019 auf dem ersten Meetup der Spatial Finance Initiative als Vertreter von right. based on science. Das Meetup fand bei Willis Tower Watson in London statt. Mein Interesse an der Veranstaltung kam durch meine Arbeit an einem Projekt zustande wo in Kooperation mit der ESA aus Satellitendaten auf die Emission von Schadgasen geschlossen werden soll.

Anlass der Veranstaltung und auch des Treffens liegt in der Erkenntnis, dass  zwar mehr und mehr Daten aus der Erdbeobachtung von Satelliten erheben, das aber das Potential dieser Daten für die Bewertung von Chancen und Risiken im Kontext unternehmerischer und finanzieller Entscheidungsfindung noch nicht realisiert ist. Es geht daher bei der Initiative und so auch beim Treffen um die Verwendung von Geodaten in finanzieller Praxis.

Auf der Veranstaltung wurde gezeigt, was es für Daten gibt, was einzelne Unternehmen schon mit diesen Daten anfangen und was auf der Agenda für die Zukunft steht.

Was gibt es für Daten?

Zum einen gibt es Bilder aus dem sichtbaren Bereich. Hervorzuheben ist da die Firma Planet, deren Flotte von Microsatteligen (“Doves”: jeweils 10x10x30cm, 4kg schwer) kreisförmig im Abstand von jeweils ein paar hunder Kilometern die Erde umrunden und dabei alle 24h neue Bilder der Erdoberfläche liefern. Diese können über ein Plattform eingesehen werden. Ziel ist eine “queryable earth” erklärte CEO Will Marshall. Wie er mir in der Pause erzählte wird es in Zukunft möglicherweise auch andere

Ein cooler TED-Talk findet sich hier.

Es wird auch bereits an Bilderkennungsverfahren zu gearbeitet, um Gebäude, Fabriken, Kraftwerke, aber auch Schiffe zu erkennen. Damit wäre auch ein “Echtzeit”-Tracking von Assets möglich. Durch solches Bildmaterial kann man auch durch die Bewegung von Autos auf die Anzahl Menschen an bestimmten Orten schließen. Basierend darauf könnten Firmen z.B. relevante Orte für neue Geschäfte finden – seien dies Orte für Kraftwerke oder neue Kaffees.

Zudem ist in den Bildern natürlich auch die Veränderung der Wasserressourcen oder der Verlauf von Katastrophen nachvollziehbar, die für die Einsatzplanung von Rettungskräften, aber eben auch zur Bewertung von Schäden und zukünftigen Risiken und ggf. der Planung und Umsetzung von Schutzmaßnahmen (z.B. Deiche gegen Fluten) herangezogen werden. Man kann durch die Bilder auch die Entwicklung der Landwirtschaft beurteilen.  Auch Ressourcenabbau und Umweltzerstörung werden so sichtbar. Ggf. können so Effekte und Verursacher identifiziert werden. Umgekehrt kann man auch erkennen, wo die Verhältnisse besser werden (z.B. durch Aufforstung).

Die NASA, die ESA oder auch EUMETSAT verfügen zudem über Satelliten, die auch Bilder anderer Spektrakbereiche aufzeichen und somit z.B. Wärmetransport, Gasemissionen (NO2, SO2, CO, CO2, Methan usw.) detektieren können. Diese Daten können für Wetteranalysen, aber auch zukünftig für die Bewertung lokaler oder globaler Impacts ausgelöst von Schadgasen verwendet werden.

Alle diese Daten könnten in Zukunft auch verwendet werden, um die Zukunftssicherheit von Städten und Firmen zu beurteilen, was sich auf die Nachfrage nach Wertpapieren auswirken kann. Wer will schon in Firmen investieren, deren Assets überwiegend in Überschwemmungsgebieten liegen oder deren Businessmodell so stark auf CO2-Emissionen setzt, dass dieses sobald ein CO2-Preis erhoben wird direkt in Gefahr gerät oder eben nicht für Förderungen für vorbildlicheres Umweltverhalten infrage kommt? Diese Sichtbarkeit könnte auch die Nachfrage von Kunden und die Motivation von Talenten für entsprechende Firmen zu arbeiten verändern.

Obwohl ich zustimme, sind dies nicht meine Gedanken, sondern zusammengestellte Aussagen von Panelisten von der Veranstaltung!

Was machen Unternehmen mit Satelittendaten?

  • Banken wie z.B. HSBC sind bereits dabei ihr Portfolio hinsichtlich klimafinanzieller Risiken zu durchleuchten und ggf. umzustrukturieren. Dabei kommen und sollen auch noch mehr Satellitendaten zum Einsatz kommen.
  • Nicht verwunderlich verwenden Versicherungen und Rúckversicherungen zu Einschätzung von Risiken und letztlich auch zur Festlegung von Prämien Satellitendaten.
  • Startups wie Soil One verwenden Satellitendaten, um Aussagen über den Zustand von Böden und der landwirtschaftlichen Produktion zu liefern.
  • Right. based on science verwendet Satellitendaten in Kooperation mit der ESA um CO2-Ausstöße von Städten und damit deren XDC abzuschätzen.

Was steht auf der Agenda?

In Verbindung mit der Spatial Finance Initiative steht die Asset-level data Initiative, deren Ziel es ist die physischen Besitztümer Unternehmen, Sektoren etc. zuordnen zu können. Dazu werden auch Satellitendaten benutzt. In Zukunft steht die Entwicklung von Kennzahlen, Methoden und Datenprodukten an, die Unternehmen und Investoren helfen sollen bessere finanzielle Entscheidungen zu treffen.

Mein Fazit:

Ich fand die Veranstaltung sehr spannend. Für das Projekt, an dem ich arbeite wo es um die Abschätzung von Emissionen aus Satellitendaten geht habe ich Input bekommen. Auch in puncto Ideen für Use Cases – z.B. die Beurteilung von Unternehmer- und Unternehmensrisiken und interessante Kontakte hat es sich gelohnt.

Dateien aus Unterordnern in einen Parentordner verschieben (Ubuntu 18.04)

Angenommen ihr habt – wie beispielsweise nach dem Download von Satellitendaten einen große Menge an Ordnern, die jeweils die Daten eines Zeitabschnitts enthalten und ihr móchtet diese all einen einen geinsamen Parentordner verschieben.

Geht dazu in den Parentordner <parent>, der die Datenordner <child1>, <child2> … <childn> enthält, deren Daten ihr in den Parentordner verschieben wollt und gebt:

 find . -mindepth 2 -type f -print -exec mv {} . \;

ein.

Anschließend músst ihr noch die Ornder lóschen. Das geht mit:

find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

Erledigt.

Dateien aus Unterordnern in einen Parentordner verschieben (Ubuntu 18.04)

Angenommen ihr habt – wie beispielsweise nach dem Download von Satellitendaten einen große Menge an Ordnern, die jeweils die Daten eines Zeitabschnitts enthalten und ihr móchtet diese all einen einen geinsamen Parentordner verschieben.

Geht dazu in den Parentordner <parent>, der die Datenordner <child1>, <child2> … <childn> enthält, deren Daten ihr in den Parentordner verschieben wollt und gebt:

 find . -mindepth 2 -type f -print -exec mv {} . \;

ein.

Anschließend músst ihr noch die Ornder lóschen. Das geht mit:

find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

Erledigt.

Schule ohne Fächer – in Finnland ab 2020.

Statt traditioneller Fächer wie Physik, Mathematik, Geschichte oder Literatur wird es in Finnland ab 2020 nur noch den sogenannten Phänomen-basierten Lehr- und Lernansatz geben. Dazu werden nicht einzelne Aspekte – wie z.b. die Schnecke in der Biologie oder die Gravitation in der Physik betrachtet, sondern Phänomene aus der Welt ganzheitlich in ihrem realen Kontext betrachtet und analysiert. Solche Phänomene können der Mensch, die Europäische Union, Wasser oder Energie sein. Das Thema Energie beispielsweise könnte dann aus theoretischer physikalischer, praktisch technischer aber auch gesellschaftlicher Sicht betrachtet werden.

Link zum Text.

Ich finde, dass passt gut in unsere Zeit. Isolierte Informationen nützen weniger und können außerdem jederzeit bei Google nachgeschaut werden. Wichtiger ist es Inhalte im Kontext zu bewerten und so zu intelligenten Entscheidungen oder auf neue Ideen zu kommen.

WordPress – Mehr Traffic durch eine optimierte Seitengeschwindigkeit

Eine schnellere Seite ist weniger nervig oder wirkt sich auf euer Ranking aus. Genau lässt sich das schwer sagen, jedenfalls kann ich euch sagen, dass mein Traffic in einer Woche um 15% hochging, nachdem ich meine Seite optimiert habe.

 

Wie ich das gemacht habe, fasse ich hier kurz zusammen.

Macht als erstes mal einen Speedtest auf Google PageSpeed. Einfach hier eure Domain eingeben und los. Ihr erhaltet dann als Ergebnis eine Auflistung mit Mängeln und Optimierungsempfehlungen. Was davon macht man aber nun wie?

Caching

Installiert euch das Plugin WP Super Cache, aktiviert es und stellt es unter Einstellungen -> WP Super Cache -> Easy ein, indem ihr den Radio-Button auf Caching An setzt.

Minifying

Wenn ihr Plugins installiert, dann bringen diese alle ihren eigenen, z. T. in verschiedene Dateien aufgeteilten Code mit. Dieser enthält dann auch noch sowas wie Kommentare und ist sehr hübsch formatiert. Das interessiert letztlich aber nur den Entwickler, dem User, also eure Leser, die nur eure Seite im Netz abschauen wollen, denen ist es herzlich egal wie schön der Javascript-Code formatiert ist. Im Zweifel schluckt das Platz. Mit dem Plugin “Minify HTML” könnt ihr verschiedene Dateitypen (HTML, Javascript und CSS) minifyen, was verkleinern heißt. Ihr könnt euch dabei vorstellen, dass alles, was nur möglich ist abgekürzt wird. Wenn z.B eine Funktion im Code “macheDas” heißt, so kürzt das minify-Plugin diese Funktion zu “mD” ab. Auch wenn ihr vielleicht nicht wisst, was eine Funktion im Code sein soll, so seht ihr dennoch direkt, dass “mD” mit nur zwei Buchstaben nur 1/4 so lang ist wie das Wort “macheDas”. Wenn man nun alles im Code so abkürzt wird dieser kleiner und damit etwas schneller.

Nachdem ihr das Plugin installiert habt, könnt ihr unter Einstellungen -> Minify HTML folgendes einstellen:

Bilder verkleinern

Bilder sind mit das speicheraufwändigste im Netz. Ein Handybild hat heute schon leicht 4 Megabyte. Das ist für Websites, vor alle, wenn diese auf dem Smartphone via 4G angeschaut werden oder mit noch weniger Speed total nervig. Mit dem Plugin EWWW Image Optimizer könnt ihr eure Bilder komprimieren. In der free Version bekommt man zwar nicht alle Verkleinerungsmethoden geboten, aber man kann schon etwas erreichen. Nachdem ihr das Plugin aktiviert habt, erhaltet ihr unter Medien einen neuen Reiter “Massenoptimierung”. Dort könnt ihr nach unoptimierten Bildern scannen und einen Optimierungsvorgang ausführen. Sofern ihr euch etwas mit Komprimierung, könnt ihr unter Einstellungen -> EWWW Image Optimizer Einstellungen vornehmen. In der free Version könnt ihr u.a. die png-Komprimierung konfigurieren, d.h. ihr könnt unter Grundeinstellungen statt der verlustfreien auch die verlustbehaftete Komprimierung auswählen und unter Erweiterte Einstellungen noch den Grad der Komprimierung wählen. Das kann den Komprimierungsvorgang allerdings deutlich verlängern. Zusätzlich könnt ihr in den Erweiterten Einstellungen noch die Bildergrößen wählen, auf die die Komprimierung jeweils zutrifft.

Ihr müsst in jedem Fall bei einer ersten Optimierung je nach der Anzahl Bilder, die ihr schon hochgeladen habt und welche erweiterten Einstellungen ihr vorgenommen habt schon eine ganze Zeit warten, bis die Komprimierung durch ist! Bei mir haben circa 1500 Bilder gut 45 Minuten gebraucht. Also plant das mit ein! Währenddessen solltet ihr an dem Fenster, indem der Prozess läuft nicht herumwerkeln!

.htaccess Einträge

Das ist jetzt schon eher was für Fortgeschrittene, allerdings, wer mal fortgeschritten sein will, muss sich das auch irgendwann ansehen. Also, warum nicht heute, denn so schwer ist es auch nicht. Es reicht zur Not, dass ihr eine Verbindung zu eurem Webserver herstellt und Copy & Paste von hier macht.

Der Reihe nach:

htaccess steht für Hypertext Access. In dieser Datei werden Verhaltensregeln für euren Server zusammengefasst. Diese können z.B. die Komprimierung von Daten umfassen. Also das, was wir brauchen, wenn wir eine schnellere Webseite haben wollen.

Die .htaccess-Datei, die im Wurzelverzeichnis eures WordPress auf eurem Server liegt. Je nachdem, was ihr für einen Provider habt, könnt ihr diesen Folder entweder über einen Web-Dateimanager finden, wenn ihr euch bei eurem Provider einloggt. Eine andere Möglichkeit ist es euren Webspace via FTP zu erreichen. Dafür könnt ihr z.B. das Programm FileZilla benutzen.  Wie man eine FTP-Verbindung zu eurem Webspace oder Server herstellt, müsste auf der Seite eures Hosters stehen. Ihr könnt den ggf. auch anrufen.

Wenn ihr die Verbindung hergestellt habt, dann könnt ihr euch in dem Ordner, der euren WordPress Ordner beeinhaltet die .htaccess-Datei anschauen. Dort steht ggf. schon etwas drin.

Nun schaut ihr euch die Datei hier an. Wenn ihr euch etwas auskennt oder auskennen lernen wollt, dann lest euch dort die Kommentare durch oder seht euch zusätzlich hier um.

Für die Geschwindigkeit sind vor allem die Blöcke

# ----------------------------------------------------------------------
# | Compression |
# ----------------------------------------------------------------------

und

# ----------------------------------------------------------------------
# | ETags |
# ----------------------------------------------------------------------

und

# ----------------------------------------------------------------------
# | Expires headers |
# ----------------------------------------------------------------------

relevant.

Wenn ihr nur die reinkopieren wollt, dann kopiert euch einfach folgenden Teil nach allem, was bei euch eh schon in der .htaccess-Datei steht. Kopiert euch:

# ----------------------------------------------------------------------
# | Compression |
# ----------------------------------------------------------------------

<IfModule mod_deflate.c>

 # Force compression for mangled `Accept-Encoding` request headers
 # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html

 <IfModule mod_setenvif.c>
 <IfModule mod_headers.c>
 SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
 RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
 </IfModule>
 </IfModule>

 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 # Compress all output labeled with one of the following media types.
 #
 # (!) For Apache versions below version 2.3.7 you don't need to
 # enable `mod_filter` and can remove the `<IfModule mod_filter.c>`
 # and `</IfModule>` lines as `AddOutputFilterByType` is still in
 # the core directives.
 #
 # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype

 <IfModule mod_filter.c>
 AddOutputFilterByType DEFLATE "application/atom+xml" \
 "application/javascript" \
 "application/json" \
 "application/ld+json" \
 "application/manifest+json" \
 "application/rdf+xml" \
 "application/rss+xml" \
 "application/schema+json" \
 "application/vnd.geo+json" \
 "application/vnd.ms-fontobject" \
 "application/x-font-ttf" \
 "application/x-javascript" \
 "application/x-web-app-manifest+json" \
 "application/xhtml+xml" \
 "application/xml" \
 "font/eot" \
 "font/opentype" \
 "image/bmp" \
 "image/svg+xml" \
 "image/vnd.microsoft.icon" \
 "image/x-icon" \
 "text/cache-manifest" \
 "text/css" \
 "text/html" \
 "text/javascript" \
 "text/plain" \
 "text/vcard" \
 "text/vnd.rim.location.xloc" \
 "text/vtt" \
 "text/x-component" \
 "text/x-cross-domain-policy" \
 "text/xml"

 </IfModule>

 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


# ----------------------------------------------------------------------
# | ETags |
# ----------------------------------------------------------------------

# Remove `ETags` as resources are sent with far-future expires headers.
#
# https://developer.yahoo.com/performance/rules.html#etags
# https://tools.ietf.org/html/rfc7232#section-2.3

# `FileETag None` doesn't work in all cases.
<IfModule mod_headers.c>
 Header unset ETag
</IfModule>

FileETag None

# ----------------------------------------------------------------------
# | Expires headers |
# ----------------------------------------------------------------------

# Serve resources with far-future expires headers.
#
# (!) If you don't control versioning with filename-based
# cache busting, you should consider lowering the cache times
# to something like one week.
#
# https://httpd.apache.org/docs/current/mod/mod_expires.html

<IfModule mod_expires.c>

 ExpiresActive on
 ExpiresDefault "access plus 1 month"

 # CSS

 ExpiresByType text/css "access plus 1 year"


 # Data interchange

 ExpiresByType application/atom+xml "access plus 1 hour"
 ExpiresByType application/rdf+xml "access plus 1 hour"
 ExpiresByType application/rss+xml "access plus 1 hour"

 ExpiresByType application/json "access plus 0 seconds"
 ExpiresByType application/ld+json "access plus 0 seconds"
 ExpiresByType application/schema+json "access plus 0 seconds"
 ExpiresByType application/vnd.geo+json "access plus 0 seconds"
 ExpiresByType application/xml "access plus 0 seconds"
 ExpiresByType text/xml "access plus 0 seconds"


 # Favicon (cannot be renamed!) and cursor images

 ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
 ExpiresByType image/x-icon "access plus 1 week"

 # HTML

 ExpiresByType text/html "access plus 0 seconds"


 # JavaScript

 ExpiresByType application/javascript "access plus 1 year"
 ExpiresByType application/x-javascript "access plus 1 year"
 ExpiresByType text/javascript "access plus 1 year"


 # Manifest files

 ExpiresByType application/manifest+json "access plus 1 week"
 ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
 ExpiresByType text/cache-manifest "access plus 0 seconds"


 # Media files

 ExpiresByType audio/ogg "access plus 1 month"
 ExpiresByType image/bmp "access plus 1 month"
 ExpiresByType image/gif "access plus 1 month"
 ExpiresByType image/jpeg "access plus 1 month"
 ExpiresByType image/png "access plus 1 month"
 ExpiresByType image/svg+xml "access plus 1 month"
 ExpiresByType image/webp "access plus 1 month"
 ExpiresByType video/mp4 "access plus 1 month"
 ExpiresByType video/ogg "access plus 1 month"
 ExpiresByType video/webm "access plus 1 month"


 # Web fonts

 # Embedded OpenType (EOT)
 ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
 ExpiresByType font/eot "access plus 1 month"

 # OpenType
 ExpiresByType font/opentype "access plus 1 month"

 # TrueType
 ExpiresByType application/x-font-ttf "access plus 1 month"

 # Web Open Font Format (WOFF) 1.0
 ExpiresByType application/font-woff "access plus 1 month"
 ExpiresByType application/x-font-woff "access plus 1 month"
 ExpiresByType font/woff "access plus 1 month"

 # Web Open Font Format (WOFF) 2.0
 ExpiresByType application/font-woff2 "access plus 1 month"


 # Other

 ExpiresByType text/x-cross-domain-policy "access plus 1 week"

</IfModule>


 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Speichert die Datei ab und ladet sie ggf. auf euren Server.

Nun sollte eure Seite schon ein ganzes Stück besser beim Google PageSpeed-Test abschneiden.

Und mit etwas Glück verbessert sich dadurch euer Traffic auch um 15% oder mehr.

Viel Erfolg mit eurer Webseite!

Euer

Frank