Настройка boost drupal 7

Дата публикации: 07 12 2012 Автор: PazitiFF
Настроил у себя на сайте модуль boost для Drupal 7 и решил оставить свои впечатления, а также перевести официальную документацию по настройке этого чудесного модуля. Начну с того, зачем мне всё это понадобилось. С помощью google chrome я обнаружил, что время ожидания первого ответа сервера и со сгенерированной html разметкой страницы составляет около 400 мс. Причем кеширование в drupal 7 было включено и ответ главной страницы составлял как и положенно 20-30 мс, но при переходе в какую либо статью, даже с кешированием ответ был около 400м.с. Проверив пару могучих сайтов, и убедившись что у меня действительно всё плохо, я принялся искать решение и оно было найдено. Модуль boost под Drupal 7 оказался как нельзя кстати. Вратце суть его работы заключается вот в чём: Посетитель переходит по какой либо ссылке на сайте, буть то главная страница, статья или какая либо другая нода. Первый раз страничка генерируется с момощью php и mysql, что на слабеньком сервере достаточно ощутимо. После сгенерированный HTML сохраняется в кеше в виде статического html файла, который не нужно заново генерировать и как следствие загрузка такого файла в браузер происходит за считанные милисекудны, к меня к примеру это время составляет около 8-10 милисекунд. К тому же уменьшается нагрузка на процессор и на всё в целом. Все последующие вызовы данной страницы уже не генерируются, а берутся из html файла. Частоту обновления страниц вы можете задавать сами в настройках модуля, так что думаю выгода тут очевидна =) Теперь опишу настройку данного модуля, следуя официальной документации для Drupal 7 версии: 1. Прежде всего мы должны включить "Чистые ссылки" или по английски "Clean URLs". Сделать это можно перейдя ваминке сайта в admin/config/search/clean-urls. 2. Любым удобным способом скачиваем модуль boost c http://drupal.org/project/boost для drupal 7 и распаковывем его в директорию sites/all/modules. Гики и ценитили Unix подобных систем могут сделать это с помощью drush, (если он конечно установлен) одной коммандой
# drush dl boost
3. Далее нужно отключить кеширование сайта, если оно было включено, иначе boost работать не будет. Это можно сделать по адресу admin/config/development/performance 4. Включаем модуль в админке admin/modules или же с помощью того же drush
# drush en boost
5. Переходим в настройку модуля admin/config/system/boost и делаем нужные настройки, например можно выставить время обновления кеша и директорию, куда собственно этот кеш должен сохраняться. По умолчанию эта директория называется cache и находится в корне сайта. Не забудьте выставить права доступа на директорию, например для пользователей Ubuntu/Debian права и владелец должны быть примерно такие:
# chown www-data:www-data cache
# chmod 775 cache
6. А теперь главная настройка модуля, без которой boost работать не будет. Нужно отредактировать файл .htaccess, если в качестве веб-сервера используется apache. В настройках модуля переходим во вкладку HTACCESS admin/config/system/boost/htaccess. Далее генерируем код кнопкой .htaccess generation. Должно получиться что то типа такого:
### 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 -s
  RewriteRule .* cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html [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 ###
Получившийся код, нужно вставить в файл .htaccess СТРОГО ПОСЛЕ СТРОКИ RewriteBase / После данных манипуляций, как обычно чистим кеш admin/config/development/performance и наслаждаемся результатом =)

Комментарии

Ща заценю.

Не забудьте выставить права доступа на директорию, например для пользователей Ubuntu/Debian права и владелец долдны быть примерно такие:

# chown www-data:www-data cache

# chmod 775 cache

........где это можно сделать подскажите пожалуйста?

Это делается в терминале linux. Это обычные команды. Директория находится в корневой директоии друпала.

спасибо!

Не забудьте выставить права доступа на директорию, например для пользователей Ubuntu/Debian права и владелец долдны быть примерно такие:

# chown www-data:www-data cache

# chmod 775 cache

.......подскажите где это выставлять никак непойму???

Boost

Вроде работает. Спасибо

Спасибо за подробное изложение вопроса!
Вопрос по теме: как узнать, что boost работает? Кроме изменения времени отдачи страницы. Он должен как-то в заголовках обозначиться?

Поправьте, пожалуйста, описки/ошибки:
- во второй строчке в слове "молуля" -> "модуля";
- "заного" -> "заново";
- "к меня" -> "у меня";
- "следую официаотной" -> "следуя официальной";
- "время обновления кеша и директория" -> "время обновления кеша и директорию".

Описки/ошибки неизбежны, пусть их вычищают пользователи. Я для таких целей ставлю модуль https://www.drupal.org/project/typo от Ромки.

Спасибо за указанные ошибки - поправил.
Как узнать, что boost работает? Если мне не изменяет память, заголовков boost никаких не шлёт, но в данный момент времени мне неначем это проверить, так как давно уже не использую Apache и boost. Вкратце работает boost так: в директории с сайтом на drupal, создаётся директория cache, в которую сохраняются статические копии html страниц. С помощью файла .htaccess просто перезаписывается путь к статическим копиям, если пользователь анонимный. Если копия есть, она отдается с минимальным временем, если копии нет, она создаётся. Встроенный в drupal кеш должен быть выключен.

Поглядел, есть в заголовках :))
(смотрим последнюю строчку):

Remote Address:xx.xxx.xxx.xxx:80
Request URL:http://xxxxx.ru/something
Request Method:GET
Status Code:200 OK
Request Headersview parsed
GET /something HTTP/1.1
Host: ххххх.ru
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36
Referer: http://xxxxx.ru/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru,en-GB;q=0.8,en;q=0.6
Cookie: has_js=1; _ga=GA1.2.284326413.1408264954; __atuvc=2%7C34
If-None-Match: "1408273678"
If-Modified-Since: Sun, 17 Aug 2014 11:07:58 +0000
Response Headersview parsed
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 17 Aug 2014 12:09:26 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 14375
Connection: keep-alive
Keep-Alive: timeout=20
ETag: "d00a-500d144640237"
Accept-Ranges: bytes
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
X-Cached-By: Boost

Спасибо за отличное дополнение к статье.

Спасибо! Полезная статья. Ещё есть дополнение к этому модулю. Для мобильных телефонов можно указать другую тему. И она тоже будет кэшироваться (отдельно). Модуль https://www.drupal.org/project/boost_mobile

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Вы можете использовать подсветку исходного кода следующими тегами: <code>, <blockcode>, <apache>, <bash>, <css>, <drupal6>, <html5>, <javascript>, <mysql>, <php>.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.