Enable static file cache for pages

This commit is contained in:
Björn Fromme
2018-10-10 09:46:05 +02:00
parent 6727975e28
commit a546863b28
5 changed files with 280 additions and 3 deletions
+103
View File
@@ -2881,6 +2881,109 @@ AddDefaultCharset utf-8
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L] RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
# End force https # 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.
<FilesMatch "\.gz">
<IfModule mod_headers.c>
Header set Content-Encoding gzip
</IfModule>
</FilesMatch>
# if there are same problems with ForceType, please try the AddType alternative
# Set proper content type gzipped html
<FilesMatch "\.html\.gz">
ForceType text/html
# AddType "text/html" .gz
</FilesMatch>
<FilesMatch "\.xml\.gz">
ForceType text/xml
# AddType "text/xml" .gz
</FilesMatch>
<FilesMatch "\.rss\.gz">
ForceType text/xml
# AddType "text/xml" .gz
</FilesMatch>
### End: Static File Cache ###
# Begin TYPO3 default rules # Begin TYPO3 default rules
RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*)\1$ RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*)\1$
RewriteRule ^.*$ - [E=CWD:%2] RewriteRule ^.*$ - [E=CWD:%2]
+2 -1
View File
@@ -65,7 +65,8 @@
"fluidtypo3/vhs": "^4.3", "fluidtypo3/vhs": "^4.3",
"webdevops/metaseo": "3.0.0", "webdevops/metaseo": "3.0.0",
"helhum/typo3-console": "^4.9", "helhum/typo3-console": "^4.9",
"gridelementsteam/gridelements": "^8.2" "gridelementsteam/gridelements": "^8.2",
"lochmueller/staticfilecache": "^6.1"
}, },
"scripts": { "scripts": {
"typo3-cms-scripts": [ "typo3-cms-scripts": [
Generated
+71 -1
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "5f4841fc9f952af0dcb544320b4a975f", "content-hash": "704a682f0763cbf02432d1c508b9cd17",
"packages": [ "packages": [
{ {
"name": "christophlehmann/imageoptimizer", "name": "christophlehmann/imageoptimizer",
@@ -1322,6 +1322,76 @@
], ],
"time": "2013-03-15T13:16:35+00:00" "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": "[email protected]",
"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", "name": "matthiasmullie/minify",
"version": "1.3.60", "version": "1.3.60",
+103
View File
@@ -305,6 +305,109 @@ AddDefaultCharset utf-8
# NOTE: Add your additional local storages here # NOTE: Add your additional local storages here
RewriteRule ^(?:typo3/|fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) - [L] 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.
<FilesMatch "\.gz">
<IfModule mod_headers.c>
Header set Content-Encoding gzip
</IfModule>
</FilesMatch>
# if there are same problems with ForceType, please try the AddType alternative
# Set proper content type gzipped html
<FilesMatch "\.html\.gz">
ForceType text/html
# AddType "text/html" .gz
</FilesMatch>
<FilesMatch "\.xml\.gz">
ForceType text/xml
# AddType "text/xml" .gz
</FilesMatch>
<FilesMatch "\.rss\.gz">
ForceType text/xml
# AddType "text/xml" .gz
</FilesMatch>
### End: Static File Cache ###
# If the file/symlink/directory does not exist => Redirect to index.php. # 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}'. # For httpd.conf, you need to prefix each '%{REQUEST_FILENAME}' with '%{DOCUMENT_ROOT}'.
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
@@ -95,7 +95,7 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\EP\EpProducts\T
'Product' => 'pricetable', 'Product' => 'pricetable',
], ],
[ [
'Product' => 'pricetable', 'Product' => '',
] ]
); );