Skip to content

Instantly share code, notes, and snippets.

@hose1021
Created December 6, 2020 16:00
Show Gist options
  • Save hose1021/2c941e0b697101c573589dfbf8c4753e to your computer and use it in GitHub Desktop.
Save hose1021/2c941e0b697101c573589dfbf8c4753e to your computer and use it in GitHub Desktop.

Revisions

  1. hose1021 renamed this gist Dec 6, 2020. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. hose1021 created this gist Dec 6, 2020.
    201 changes: 201 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,201 @@
    #
    # Sources:
    # http://stackoverflow.com/questions/7704624/how-can-i-use-gzip-compression-for-css-and-js-files-on-my-websites
    # http://codex.wordpress.org/Output_Compression
    # http://www.perun.net/2009/06/06/wordpress-websites-beschleuinigen-4-ein-zwischenergebnis/#comment-61086
    # http://www.smashingmagazine.com/smashing-book-1/performance-optimization-for-websites-part-2-of-2/
    # http://gtmetrix.com/configure-entity-tags-etags.html
    # http://de.slideshare.net/walterebert/die-htaccessrichtignutzenwchh2014
    # http://de.slideshare.net/walterebert/mehr-performance-fr-wordpress
    # https://andreashecht-blog.de/4183/
    #

    <IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    </IfModule>

    <IfModule mod_deflate.c>
    # Insert filters / compress text, html, javascript, css, xml:
    # mod_deflate can be used for Apache v2 and later and is the recommended GZip mechanism to use
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/vtt
    AddOutputFilterByType DEFLATE text/x-component
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/js
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/x-httpd-php
    AddOutputFilterByType DEFLATE application/x-httpd-fastphp
    AddOutputFilterByType DEFLATE application/atom+xml
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE application/ld+json
    AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
    AddOutputFilterByType DEFLATE application/x-font-ttf
    AddOutputFilterByType DEFLATE application/x-web-app-manifest+json
    AddOutputFilterByType DEFLATE font/opentype
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE image/x-icon

    # Exception: Images
    SetEnvIfNoCase REQUEST_URI \.(?:gif|jpg|jpeg|png)$ no-gzip dont-vary

    # Drop problematic browsers
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

    # Make sure proxies don't deliver the wrong content
    <IfModule mod_headers.c>
    Header append Vary User-Agent env=!dont-vary
    </IfModule>

    </IfModule>

    # mod_gzip is an external extension and last updated 2015, so
    # if available please use mod_deflate instead
    # If you are stuck on Apache v1.3 you can use mod_zip to enable Gzip
    # as mod_deflate is available for Apache v2 or later only.
    <IfModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
    mod_gzip_item_include handler ^cgi-script$
    mod_gzip_item_include mime ^text/.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
    </IfModule>


    ## EXPIRES CACHING ##
    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 week"

    ExpiresByType text/css "access plus 1 month"

    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"

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

    ExpiresByType text/html "access plus 1 minute"

    ExpiresByType text/javascript "access plus 1 month"
    ExpiresByType text/x-javascript "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 months"
    ExpiresByType application/x-javascript "access plus 1 months"

    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/svg+xml "access plus 1 month"
    ExpiresByType image/bmp "access plus 1 month"
    ExpiresByType image/webp "access plus 1 month"

    ExpiresByType audio/ogg "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"

    ExpiresByType text/plain "access plus 1 month"
    ExpiresByType text/x-component "access plus 1 month"

    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"

    ExpiresByType application/pdf "access plus 1 month"

    ExpiresByType application/x-shockwave-flash "access plus 1 month"

    ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
    ExpiresByType font/eot "access plus 1 month"
    ExpiresByType font/opentype "access plus 1 month"
    ExpiresByType application/x-font-ttf "access plus 1 month"
    ExpiresByType application/font-woff "access plus 1 month"
    ExpiresByType application/font-woff2 "access plus 1 month"
    ExpiresByType application/x-font-woff "access plus 1 month"
    ExpiresByType font/woff "access plus 1 month"

    </IfModule>
    ## EXPIRES CACHING ##


    #Alternative caching using Apache's "mod_headers", if it's installed.
    #Caching of common files - ENABLED
    <IfModule mod_headers.c>

    # 1 Month
    <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    Header set Cache-Control "max-age=2592000, public"
    </FilesMatch>

    # 2 DAYS
    <FilesMatch "\.(xml|txt)$">
    Header set Cache-Control "max-age=172800, public, must-revalidate"
    </FilesMatch>

    # 2 HOURS
    <FilesMatch "\.(html|htm)$">
    Header set Cache-Control "max-age=7200, must-revalidate"
    </FilesMatch>

    </IfModule>


    <IfModule mod_headers.c>
    <FilesMatch "\.(js|css|xml|gz|html|ttf)$">
    Header append Vary: Accept-Encoding
    </FilesMatch>
    </IfModule>

    # Set Keep Alive Header
    # This *just* sets the header - maybe your hoster is not allowing this feature
    # Please check if it is working with tools like http://www.webpagetest.org
    <IfModule mod_headers.c>
    Header set Connection keep-alive
    </IfModule>

    # If your server don't support ETags deactivate with "None" (and remove header)
    <IfModule mod_expires.c>
    <IfModule mod_headers.c>
    Header unset ETag
    </IfModule>
    FileETag None
    </IfModule>