1. Приглашаем вступить в нашу группу ВКонтакте.
    Скрыть объявление
  2. Присоединяйтесь к нашему чату по ссылке: http://t.me/mediawiki_ru
    Скрыть объявление

Настройка кэширования

Тема в разделе "Основные вопросы по Media Wiki", создана пользователем 50Hz, 22 дек 2014.

  1. 50Hz
    Оффлайн

    50Hz Только зашёл

    Регистрация:
    2 апр 2014
    Сообщения:
    23
    Симпатии:
    1
    Пол:
    Мужской
    Пытался разобраться в настройке кэширования медиавики по английской вики, но там сильно много накручено.

    Может можно составить понятное руководство?

    Я пока что в LocalSettings.php выполнил эту процедуру:
    ## Set $wgCacheDirectory to a writable directory on the web server
    ## to make your wiki go slightly faster. The directory should not
    ## be publically accessible from the web.
    $wgCacheDirectory = "$IP/cache";

    В директории cache появились два файла: l10n_cache-en.cdb и l10n_cache-ru.cdb размером по несколько сотен килобайт и все. Файлы не обновляются уже пару недель.

    Это и есть включенное кэширование?
     
  2. UksusoFF
    Оффлайн

    UksusoFF Moderator Команда форума

    Регистрация:
    13 май 2013
    Сообщения:
    1.590
    Симпатии:
    194
    Пол:
    Мужской
    Адрес:
    Самара
    Но для начала неплохо бы узнать информацию о вашем сервере.
     
  3. 50Hz
    Оффлайн

    50Hz Только зашёл

    Регистрация:
    2 апр 2014
    Сообщения:
    23
    Симпатии:
    1
    Пол:
    Мужской
    Ага, файлы l10n_cache-en.cdb и l10n_cache-ru.cdb, это - кэшированная локализация.

    На сервере из php-акселераторов ничего нет. Есть только Zend Guard Loader, но он не кэширует вроде бы.

    Тут вроде объяснено про кэширование
    http://www.mediawiki.org/wiki/Manual:Cache/ru

    Попробовал включить $wgMainCacheType = CACHE_DBA; Это вызвало ошибку:
    Fatal error: Call to undefined function dba_open() in /var/www/.../includes/objectcache/DBABagOStuff.php on line 103

    Включил $wgMainCacheType = CACHE_DB; Вики заработала. Я так понимаю, нужно посмотреть на размер базы данных, он должен вырасти?
     
  4. 50Hz
    Оффлайн

    50Hz Только зашёл

    Регистрация:
    2 апр 2014
    Сообщения:
    23
    Симпатии:
    1
    Пол:
    Мужской
    За час размер базы данных увеличился на 1,5 мБ, похоже работает?
     
  5. 50Hz
    Оффлайн

    50Hz Только зашёл

    Регистрация:
    2 апр 2014
    Сообщения:
    23
    Симпатии:
    1
    Пол:
    Мужской
    Может быть, когда включаешь $wgMainCacheType = CACHE_DBA; нужно еще конфигурировать переменные для сохранения кэша на диске?
    http://www.mediawiki.org/wiki/Manual:File_cache
     
  6. UksusoFF
    Оффлайн

    UksusoFF Moderator Команда форума

    Регистрация:
    13 май 2013
    Сообщения:
    1.590
    Симпатии:
    194
    Пол:
    Мужской
    Адрес:
    Самара
    Ну так поставьте XCache например, и определитесь что хотите кэшировать =)
     
  7. 50Hz
    Оффлайн

    50Hz Только зашёл

    Регистрация:
    2 апр 2014
    Сообщения:
    23
    Симпатии:
    1
    Пол:
    Мужской
    У меня нет собственного хостинга :)
     
  8. UksusoFF
    Оффлайн

    UksusoFF Moderator Команда форума

    Регистрация:
    13 май 2013
    Сообщения:
    1.590
    Симпатии:
    194
    Пол:
    Мужской
    Адрес:
    Самара
    Ну тогда вам к хостеру с этими вопросами.
     
  9. Vor_tex
    Онлайн

    Vor_tex Осваивается

    Регистрация:
    17 дек 2014
    Сообщения:
    104
    Симпатии:
    15
    Пол:
    Мужской
    Приветствую!
    Когда посетителей было не много хостинг справлялся и об оптимизации я даже не думал, а в параметре было $wgMainCacheType = CACHE_NONE;
    Решил поставить $wgMainCacheType = CACHE_DB;, в итоге за сутки размер БД вырос всего на 15 МБ, а занимаемое место на диске возросло на 1ГБ, но сегодня утром стало вновь на 1ГБ больше...
    Кто может объяснить как работает кеширование и как лучше его настроить....
    Английские мануалы читал, но ввиду того что пользуюсь переводчиками всего понять не смогу...
     
  10. Юрий Бондаренко
    Оффлайн

    Юрий Бондаренко Прижился

    Регистрация:
    26 май 2015
    Сообщения:
    277
    Симпатии:
    71
    Пол:
    Мужской
    1.
    С помощью memcached и .htaccess, сохраняет сгенерированные страницы в папке на диске и при их наличии сразу редиректит на них. Если стоит nginx - работает мгновенно, практически как статичный сайт. Для залогиненных юзеров кешируется все через memcached

    LocalSettings:

    $wgMainCacheType = CACHE_MEMCACHED;
    $wgParserCacheType = CACHE_MEMCACHED; # optional
    $wgMessageCacheType = CACHE_MEMCACHED; # optional
    $wgMemCachedServers = array( "127.0.0.1:11211" );

    $wgSessionsInObjectCache = true; # optional
    $wgSessionCacheType = CACHE_MEMCACHED; # optional

    ## Set $wgCacheDirectory to a writable directory on the web server
    ## to make your wiki go slightly faster. The directory should not
    ## be publically accessible from the web.
    $wgUseFileCache = true;
    $wgShowIPinHeader = false;
    $wgCacheDirectory = "$IP/cache";
    $wgFileCacheDirectory = "$IP/../html_cache";
    $wgFileCacheDepth = 0;
    $wgDisableCounters = true;
    $wgInvalidateCacheOnLocalSettingsChange = true;

    $wgUseETag = true;

    .htaccess:

    # кеширование в браузере на стороне пользователя
    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access 7 days"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/x-icon "access 1 year"
    </IfModule>

    # Cache-Control
    <ifModule mod_headers.c>
    # 30 дней
    <filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
    Header set Cache-Control "max-age=2592000, public"
    </filesMatch>
    </ifModule>

    RewriteBase /
    # If a cached page exists under /w/html_cache, do an internal redirect to it:
    RewriteCond %{HTTP_COOKIE} !UserID=
    RewriteCond %{QUERY_STRING} !.
    ReWriteCond %{THE_REQUEST} ^GET\x20/wiki/([^\x20/]+)\x20HTTP
    RewriteCond %{DOCUMENT_ROOT}/html_cache/%1.html -s
    RewriteRule ^wiki/(.+)$ /html_cache/%1.html [B,L,NS]

    2. Если нет возможности применить вариант 1, то всего две строки

    $wgMainCacheType = CACHE_ANYTHING;
    $wgUseFileCache = true;

    уже дадут заметное снижение нагрузки.
     
    Последнее редактирование: 7 дек 2017
    Vor_tex нравится это.
  11. Vor_tex
    Онлайн

    Vor_tex Осваивается

    Регистрация:
    17 дек 2014
    Сообщения:
    104
    Симпатии:
    15
    Пол:
    Мужской
    2 вариант особо не помог, хотя нагрузка снизилась,
    сейчас тестирую первый вариант, нагрузка уменьшилась (пока точно сказать на сколько не могу), беспокоит то что в течении суток запросов к БД 0 (ноль)..... так должно быть?
     
  12. Юрий Бондаренко
    Оффлайн

    Юрий Бондаренко Прижился

    Регистрация:
    26 май 2015
    Сообщения:
    277
    Симпатии:
    71
    Пол:
    Мужской
    в идеале - да.
     
  13. Vor_tex
    Онлайн

    Vor_tex Осваивается

    Регистрация:
    17 дек 2014
    Сообщения:
    104
    Симпатии:
    15
    Пол:
    Мужской
    ну немного все таки под конец запросов было, а вот память, к концу суток сайт занимал почти 2ГБ, а с утра около 1.2ГБ, это нормально?
     
  14. Юрий Бондаренко
    Оффлайн

    Юрий Бондаренко Прижился

    Регистрация:
    26 май 2015
    Сообщения:
    277
    Симпатии:
    71
    Пол:
    Мужской
    вполне, зависит от ваших систем кеширования.

    https://habrahabr.ru/company/zerotech/blog/316316/
    https://www.mediawiki.org/wiki/Manual:Caching

    https://sheensay.ru/memcached-install-config
    http://adminunix.ru/ke-shirovanie-zaprosov-v-mysql/
    http://rubuntu.com/4203/nastrojka-keshirovaniya-otvetov-backend-operativnuyu-pamyat
     

Поделиться этой страницей