Назад | Перейти на главную страницу

Сделайте проверку Varnish на статичность HTML перед подачей на стол

Я думал написать некоторую логику для своего приложения, чтобы оно могло записывать содержимое статической страницы в s3 или какой-нибудь CDN и обслуживать в основном оттуда. Но я не уверен, возможно ли это.

Например, у меня есть site.com/something, он должен сначала поискать это в cdn, а если нет, подавать из кеша лака или nginx / php-fpm. Идея состоит в том, чтобы забрать трафик с сервера.

Это возможный сценарий?

В drupal у меня есть видел модуль, который делает это. Он хранит статический файловый кеш на диске и обслуживает его там. Ниже представлена ​​диаграмма, которую они предоставляют.

Они просят следующее дополнение к .htaccess

# RewriteBase /

### BOOST START ###

# Allow for alt paths to be set via htaccess rules; allows for cached variants (future mobile support)   
RewriteRule .* - [E=boostpath:normal]

# Caching for anonymous users   # Skip boost IF not get request OR uri has wrong dir OR cookie is set OR request came from this server OR https request   
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD)$ [OR]   
RewriteCond %{REQUEST_URI} (^/(admin|cache|misc|modules|sites|system|openid|themes|node/add|comment/reply))|(/(edit|user|user/(login|password|register))$) [OR]   
RewriteCond %{HTTPS} on [OR]   
RewriteCond %{HTTP_COOKIE} DRUPAL_UID [OR]   
RewriteCond %{ENV:REDIRECT_STATUS} 200   
RewriteRule .* - [S=3]

# GZIP   
RewriteCond %{HTTP:Accept-encoding} !gzip   
RewriteRule .* - [S=1]   
RewriteCond %{DOCUMENT_ROOT}/cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html\.gz -s   
RewriteRule .* cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html\.gz [L,T=text/html,E=no-gzip:1]

# NORMAL   
RewriteCond %{DOCUMENT_ROOT}/cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html -s   
RewriteRule .* cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html [L,T=text/html]

### BOOST END ###

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
# Pass all requests not referring directly to files in the filesystem to
# index.php. Clean URLs are handled in drupal_environment_initialize().
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

Я не совсем понимаю, что это такое, но вполне понимаю, что для этого пользователь должен использовать apache. Может быть лучшее решение? Я могу думать здесь очень глупо, но хочу изучить возможности.