diff --git a/.htaccess_prod b/.htaccess_prod
index f9589684..babc9d45 100644
--- a/.htaccess_prod
+++ b/.htaccess_prod
@@ -2881,6 +2881,109 @@ AddDefaultCharset utf-8
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
# End force https
+ ### Begin: Static File Cache (preparation) ####
+
+ # Document root configuration
+ RewriteRule .* - [E=SFC_ROOT:%{DOCUMENT_ROOT}]
+ # RewriteRule .* - [E=SFC_ROOT:%{DOCUMENT_ROOT}/t3site] # Example if your installation is installed in a directory
+
+ # Cleanup URI
+ RewriteCond %{REQUEST_URI} ^.*$
+ RewriteRule .* - [E=SFC_URI:/%{REQUEST_URI}]
+ RewriteCond %{REQUEST_URI} ^/.*$
+ RewriteRule .* - [E=SFC_URI:%{REQUEST_URI}]
+ RewriteCond %{REQUEST_URI} ^/?$
+ RewriteRule .* - [E=SFC_URI:/]
+
+ # Cleanup HOST
+ RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$
+ RewriteRule .* - [E=SFC_HOST:%1]
+
+ # Get scheme
+ RewriteCond %{SERVER_PORT} ^443$ [OR]
+ RewriteCond %{HTTP:X-Forwarded-Proto} https
+ RewriteRule .* - [E=SFC_PROTOCOL:https]
+ RewriteCond %{SERVER_PORT} !^443$
+ RewriteCond %{HTTP:X-Forwarded-Proto} !https
+ RewriteRule .* - [E=SFC_PROTOCOL:http]
+
+ # Get port (not used at the moment)
+ RewriteRule .* - [E=SFC_PORT:80]
+ RewriteCond %{SERVER_PORT} ^[0-9]*$ [OR]
+ RewriteRule .* - [E=SFC_PORT:%{SERVER_PORT}]
+
+ # Check if the requested file exists in the cache, otherwise default to index.html that
+ # set in an environment variable that is used later on
+ RewriteCond %{ENV:SFC_ROOT}/typo3temp/tx_staticfilecache/%{ENV:SFC_PROTOCOL}/%{ENV:SFC_HOST}%{ENV:SFC_URI} !-f
+ RewriteRule .* - [E=SFC_FILE:index.html]
+
+ # Note: https://github.com/lochmueller/staticfilecache/pull/90 (Please check the realurl configuration related to "appendMissingSlash". Perhaps you need an additional "/" in the rule above)
+ # RewriteRule .* - [E=SFC_FILE:/index.html]
+
+ # Set gzip extension into an environment variable if the visitors browser can handle gzipped content and the gz-file exists
+ RewriteRule .* - [E=SFC_GZIP:]
+ RewriteCond %{HTTP:Accept-Encoding} gzip [NC]
+ RewriteRule .* - [E=SFC_GZIP:.gz]
+ RewriteCond %{ENV:SFC_ROOT}/typo3temp/tx_staticfilecache/%{ENV:SFC_PROTOCOL}/%{ENV:SFC_HOST}%{ENV:SFC_URI}%{ENV:SFC_FILE}%{ENV:SFC_GZIP} !-f
+ RewriteRule .* - [E=SFC_GZIP:]
+
+ # Note: We cannot check realurl "appendMissingSlash" or other BE related settings here - in front of the delivery.
+ # Perhaps you have to check the "SFC_FILE" value and set it to your related configution e.g. "index.html" (without leading slash).
+ # More information at: https://github.com/lochmueller/staticfilecache/pull/28
+
+ ### Begin: Static File Cache (main) ####
+
+ # We only redirect URI's without query strings
+ RewriteCond %{QUERY_STRING} ^$
+
+ # It only makes sense to do the other checks if a static file actually exists.
+ RewriteCond %{ENV:SFC_ROOT}/typo3temp/tx_staticfilecache/%{ENV:SFC_PROTOCOL}/%{ENV:SFC_HOST}%{ENV:SFC_URI}%{ENV:SFC_FILE}%{ENV:SFC_GZIP} -f
+
+ # NO frontend or backend user is logged in. Logged in users may see different
+ # information than anonymous users. But the anonymous version is cached. So
+ # don't show the anonymous version to logged in users.
+ RewriteCond %{HTTP_COOKIE} !staticfilecache [NC]
+
+ # Uncomment the following line if you use MnoGoSearch
+ #RewriteCond %{HTTP:X-TYPO3-mnogosearch} ^$
+
+ # We only redirect GET requests
+ RewriteCond %{REQUEST_METHOD} GET
+
+ # Rewrite the request to the static file.
+ RewriteRule .* %{ENV:SFC_ROOT}/typo3temp/tx_staticfilecache/%{ENV:SFC_PROTOCOL}/%{ENV:SFC_HOST}%{ENV:SFC_URI}%{ENV:SFC_FILE}%{ENV:SFC_GZIP} [L]
+
+ # Do not allow direct call the cache entries
+ RewriteCond %{ENV:SFC_URI} ^/typo3temp/tx_staticfilecache/.*
+ RewriteCond %{ENV:REDIRECT_STATUS} ^$
+ RewriteRule .* - [F,L]
+
+ ### Begin: Static File Cache (options) ####
+
+ # Set proper content type and encoding for gzipped html.
+
+
+ Header set Content-Encoding gzip
+
+
+
+ # if there are same problems with ForceType, please try the AddType alternative
+ # Set proper content type gzipped html
+
+ ForceType text/html
+ # AddType "text/html" .gz
+
+
+ ForceType text/xml
+ # AddType "text/xml" .gz
+
+
+ ForceType text/xml
+ # AddType "text/xml" .gz
+
+
+ ### End: Static File Cache ###
+
# Begin TYPO3 default rules
RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*)\1$
RewriteRule ^.*$ - [E=CWD:%2]
diff --git a/composer.json b/composer.json
index 024dad24..2d4cc419 100644
--- a/composer.json
+++ b/composer.json
@@ -65,7 +65,8 @@
"fluidtypo3/vhs": "^4.3",
"webdevops/metaseo": "3.0.0",
"helhum/typo3-console": "^4.9",
- "gridelementsteam/gridelements": "^8.2"
+ "gridelementsteam/gridelements": "^8.2",
+ "lochmueller/staticfilecache": "^6.1"
},
"scripts": {
"typo3-cms-scripts": [
diff --git a/composer.lock b/composer.lock
index 66b83bd1..4414db7e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "5f4841fc9f952af0dcb544320b4a975f",
+ "content-hash": "704a682f0763cbf02432d1c508b9cd17",
"packages": [
{
"name": "christophlehmann/imageoptimizer",
@@ -1322,6 +1322,76 @@
],
"time": "2013-03-15T13:16:35+00:00"
},
+ {
+ "name": "lochmueller/staticfilecache",
+ "version": "6.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/lochmueller/staticfilecache.git",
+ "reference": "ba7c92ffce903a89068971aa4c9428fe80193f3a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/lochmueller/staticfilecache/zipball/ba7c92ffce903a89068971aa4c9428fe80193f3a",
+ "reference": "ba7c92ffce903a89068971aa4c9428fe80193f3a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pdo": "*",
+ "ext-zlib": "*",
+ "php": ">=7.0.0",
+ "typo3/cms-core": "~8.7.0||~9.4.0||~9.5.0||dev-master"
+ },
+ "replace": {
+ "staticfilecache": "self.version",
+ "typo3-ter/staticfilecache": "self.version"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.12",
+ "phpmd/phpmd": "^2.6",
+ "phpmetrics/phpmetrics": "^2.4",
+ "scrutinizer/ocular": "^1.3.0",
+ "squizlabs/php_codesniffer": "^3.3",
+ "typo3/testing-framework": "~2.0.4||~4.2.0"
+ },
+ "suggest": {
+ "aoepeople/crawler": "For crawling the site and warmup the cache",
+ "friendsofsymfony/http-cache": "For HTTP proxy cache services like Varnish"
+ },
+ "type": "typo3-cms-extension",
+ "extra": {
+ "typo3/cms": {
+ "cms-package-dir": "{$vendor-dir}/typo3/cms",
+ "web-dir": ".Build/Web"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "SFC\\Staticfilecache\\": "Classes"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0+"
+ ],
+ "authors": [
+ {
+ "name": "Tim Lochmüller",
+ "email": "tim@fruit-lab.de",
+ "homepage": "https://github.com/lochmueller",
+ "role": "Developer"
+ }
+ ],
+ "description": "Transparent static file cache solution using mod_rewrite and mod_expires. Increase performance for static pages by a factor of 230!!",
+ "homepage": "https://github.com/lochmueller/staticfilecache",
+ "keywords": [
+ "Static file cache",
+ "TYPO3 CMS",
+ "magic",
+ "speed"
+ ],
+ "time": "2018-09-20T16:58:53+00:00"
+ },
{
"name": "matthiasmullie/minify",
"version": "1.3.60",
diff --git a/web/.htaccess b/web/.htaccess
index fe3f387e..50fed061 100644
--- a/web/.htaccess
+++ b/web/.htaccess
@@ -305,6 +305,109 @@ AddDefaultCharset utf-8
# NOTE: Add your additional local storages here
RewriteRule ^(?:typo3/|fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) - [L]
+ ### Begin: Static File Cache (preparation) ####
+
+ # Document root configuration
+ RewriteRule .* - [E=SFC_ROOT:%{DOCUMENT_ROOT}]
+ # RewriteRule .* - [E=SFC_ROOT:%{DOCUMENT_ROOT}/t3site] # Example if your installation is installed in a directory
+
+ # Cleanup URI
+ RewriteCond %{REQUEST_URI} ^.*$
+ RewriteRule .* - [E=SFC_URI:/%{REQUEST_URI}]
+ RewriteCond %{REQUEST_URI} ^/.*$
+ RewriteRule .* - [E=SFC_URI:%{REQUEST_URI}]
+ RewriteCond %{REQUEST_URI} ^/?$
+ RewriteRule .* - [E=SFC_URI:/]
+
+ # Cleanup HOST
+ RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$
+ RewriteRule .* - [E=SFC_HOST:%1]
+
+ # Get scheme
+ RewriteCond %{SERVER_PORT} ^443$ [OR]
+ RewriteCond %{HTTP:X-Forwarded-Proto} https
+ RewriteRule .* - [E=SFC_PROTOCOL:https]
+ RewriteCond %{SERVER_PORT} !^443$
+ RewriteCond %{HTTP:X-Forwarded-Proto} !https
+ RewriteRule .* - [E=SFC_PROTOCOL:http]
+
+ # Get port (not used at the moment)
+ RewriteRule .* - [E=SFC_PORT:80]
+ RewriteCond %{SERVER_PORT} ^[0-9]*$ [OR]
+ RewriteRule .* - [E=SFC_PORT:%{SERVER_PORT}]
+
+ # Check if the requested file exists in the cache, otherwise default to index.html that
+ # set in an environment variable that is used later on
+ RewriteCond %{ENV:SFC_ROOT}/typo3temp/tx_staticfilecache/%{ENV:SFC_PROTOCOL}/%{ENV:SFC_HOST}%{ENV:SFC_URI} !-f
+ RewriteRule .* - [E=SFC_FILE:index.html]
+
+ # Note: https://github.com/lochmueller/staticfilecache/pull/90 (Please check the realurl configuration related to "appendMissingSlash". Perhaps you need an additional "/" in the rule above)
+ # RewriteRule .* - [E=SFC_FILE:/index.html]
+
+ # Set gzip extension into an environment variable if the visitors browser can handle gzipped content and the gz-file exists
+ RewriteRule .* - [E=SFC_GZIP:]
+ RewriteCond %{HTTP:Accept-Encoding} gzip [NC]
+ RewriteRule .* - [E=SFC_GZIP:.gz]
+ RewriteCond %{ENV:SFC_ROOT}/typo3temp/tx_staticfilecache/%{ENV:SFC_PROTOCOL}/%{ENV:SFC_HOST}%{ENV:SFC_URI}%{ENV:SFC_FILE}%{ENV:SFC_GZIP} !-f
+ RewriteRule .* - [E=SFC_GZIP:]
+
+ # Note: We cannot check realurl "appendMissingSlash" or other BE related settings here - in front of the delivery.
+ # Perhaps you have to check the "SFC_FILE" value and set it to your related configution e.g. "index.html" (without leading slash).
+ # More information at: https://github.com/lochmueller/staticfilecache/pull/28
+
+ ### Begin: Static File Cache (main) ####
+
+ # We only redirect URI's without query strings
+ RewriteCond %{QUERY_STRING} ^$
+
+ # It only makes sense to do the other checks if a static file actually exists.
+ RewriteCond %{ENV:SFC_ROOT}/typo3temp/tx_staticfilecache/%{ENV:SFC_PROTOCOL}/%{ENV:SFC_HOST}%{ENV:SFC_URI}%{ENV:SFC_FILE}%{ENV:SFC_GZIP} -f
+
+ # NO frontend or backend user is logged in. Logged in users may see different
+ # information than anonymous users. But the anonymous version is cached. So
+ # don't show the anonymous version to logged in users.
+ RewriteCond %{HTTP_COOKIE} !staticfilecache [NC]
+
+ # Uncomment the following line if you use MnoGoSearch
+ #RewriteCond %{HTTP:X-TYPO3-mnogosearch} ^$
+
+ # We only redirect GET requests
+ RewriteCond %{REQUEST_METHOD} GET
+
+ # Rewrite the request to the static file.
+ RewriteRule .* %{ENV:SFC_ROOT}/typo3temp/tx_staticfilecache/%{ENV:SFC_PROTOCOL}/%{ENV:SFC_HOST}%{ENV:SFC_URI}%{ENV:SFC_FILE}%{ENV:SFC_GZIP} [L]
+
+ # Do not allow direct call the cache entries
+ RewriteCond %{ENV:SFC_URI} ^/typo3temp/tx_staticfilecache/.*
+ RewriteCond %{ENV:REDIRECT_STATUS} ^$
+ RewriteRule .* - [F,L]
+
+ ### Begin: Static File Cache (options) ####
+
+ # Set proper content type and encoding for gzipped html.
+
+
+ Header set Content-Encoding gzip
+
+
+
+ # if there are same problems with ForceType, please try the AddType alternative
+ # Set proper content type gzipped html
+
+ ForceType text/html
+ # AddType "text/html" .gz
+
+
+ ForceType text/xml
+ # AddType "text/xml" .gz
+
+
+ ForceType text/xml
+ # AddType "text/xml" .gz
+
+
+ ### End: Static File Cache ###
+
# If the file/symlink/directory does not exist => Redirect to index.php.
# For httpd.conf, you need to prefix each '%{REQUEST_FILENAME}' with '%{DOCUMENT_ROOT}'.
RewriteCond %{REQUEST_FILENAME} !-f
diff --git a/web/typo3conf/ext/ep_products/ext_localconf.php b/web/typo3conf/ext/ep_products/ext_localconf.php
index 55ae777c..64a73fd3 100644
--- a/web/typo3conf/ext/ep_products/ext_localconf.php
+++ b/web/typo3conf/ext/ep_products/ext_localconf.php
@@ -95,7 +95,7 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\EP\EpProducts\T
'Product' => 'pricetable',
],
[
- 'Product' => 'pricetable',
+ 'Product' => '',
]
);