Boost

Poskytuje statickou cache stránek, čímž výrazně zvyšuje výkon a škálovatelnost u webů s převážně anonymním provozem. Zajišťuje automatickou regeneraci obsahu a rychlé načítání stránek. Jedná se zřejmě o nejlepší možnost zvýšení výkonu jak pro sdílený, tak i pro dedikovaný hosting.

Instalace a nastavení:

  1. Volitelně nainstalujte modul HTTP Parallel Request & Threading Library (vhodné pro modul Boost Crawler).
  2. admin/config/search/clean-urls (Nastavení, Vyhledávání a metadata, Čistá URL) zkontrolujte, zda jsou zapnutá čístá URL.
  3. V config/development/performance (Nastavení, Vývoj, Výkon) odškrtněte volbu Kešovat stránky pro anonymní uživatele. Ostatní volby mohou být povoleny.
  4. Rozbalte modul Boost 7.x-1.0 do adresáře sites/all/modules.
  5. V admin/modules (Moduly) povolte požadované moduly:
    • Boost
    • Boost Crawler – umožňuje vložit jednotlivé stránky do mezipaměnti (pre-cache) ještě před tím, než je někdo navštíví
  6. admin/config/system/boost (Nastavení, Systém, Boost) v případě potřeby můžete upravit výchozí nastavení.
  7. admin/config/system/boost/filesystem (Nastavení, Systém, Boost, File system) se uložením nastavení ujistěte, že do cache adresáře může webový server zapisovat. Např. vlastník: uživatel, skupina: www-data, oprávnění: 0775 (read/write/exec owner, read/write/exec group, read/exec others).
  8. Vytvořte si zálohu souboru .htaccess v kořenovém adresáři webu.
  9. admin/config/system/boost/htaccess/generator (Nastavení, Systém, Boost, .htaccess, .htaccess generation) zkopírujte obsah do souboru .htaccess dle instrukcí za řádek "# RewriteBase /".
  10. admin/config/system/boost/expiration (Nastavení, Systém, Boost, Cache Expiration) je možné upravit nastavení obnovy dat. Souvisí s nastavením časů v Boost Settings.
  11. admin/config/system/boost/crawler (Nastavení, Systém, Boost, Crawler) upravte nastavení dle potřeby např.:
    • Enable the cron crawler: ano
    • Time (in seconds) to use for crawling on every cron run: 30
  12. Ve výchozím stavu se statické stránky ukládají do kořenového adresáře webu do adresáře cache/normal.

Další moduly:

  • Cache Expiration – aktualizuje cache po editaci obsahu (univerzálnější řešení než např. modul Boost Expire)
  • Memcache API and Integration
  • Varnish
    • Cache Control | Edge Side Includes integration
  • HTTP Response Headers
  • Advanced CSS/JS Aggregation enlightened
  • CloudFlare – Free Reverse Proxy, Firewall, and Global CDN
  • Path Cache

Nástroje na měření rychlosti (výkonu) stránek:

Zrychlení výkonu webu:

  • drupalinnovations.com/blog/improving-drupal-performance-20-tips
  • cloudflare.com yes
    • nastavení
      • Caching
        • Caching level: Standard
        • Always Online: On
      • Page Rules (pouze 3 pravidla u free účtu)
        • 'cache everything' on /*:
          • Custom caching: Cache everything
          • Edge cache expire TTL: Respect all existing headers
          • Browser cache expire TTL: 1 hour (upravte dle potřeby)
        • 'bypass cache' on /user/login:
          • Custom caching: Bypass cache
          • Browser cache expire TTL: 4 hours (upravte dle potřeby)
        • 'bypass cache' on /admin/*:
          • Custom caching: Bypass cache
          • Browser cache expire TTL: 4 hours (upravte dle potřeby)
    • Drupal 8
      1. Povolit modu Internal Page Cache.
      2. V admin/config/development/performance nastavit Page cache maximum age.
      3. V sites/default/settings.php nastavit:
        • <?php
          // Reverse proxy configuration.
          $settings['reverse_proxy'] = TRUE;
          $settings['reverse_proxy_addresses'] = array($_SERVER['REMOTE_ADDR']);
          $settings['reverse_proxy_header'] = 'HTTP_CF_CONNECTING_IP';
          
          $settings['omit_vary_cookie'] = TRUE;
          
          // Trusted host settings.
          $settings['trusted_host_patterns'] = array(
            '^pidramble\.com$',
            '^.+\.pidramble\.com$',
          );
          ?>
      4. Zkontrolujte výsledek (CF-Cache-Status by měl být HIT):
        • $ curl -s --head http://www.mywebpage.com/ | grep CF
          CF-Cache-Status: HIT
          CF-RAY: 25bf2a08a7f425a3-ORD
      5. Nevýhoda účtu zdarma (omezení na max. 3 pravidla):
        • Pokud adresu "node/[id]/edit" navštíví nepřihlášený uživatel, nastaví se na "403 – Access Denied" a před její editací je třeba v CloudFlare vysypat Cache.
        • Řešení:
          • pro editaci použít alternativní URL např. edit.mywebpage.com nebo
          • při editaci dočasně vypnout Cache
    • výhody:
      • zlepšení výkonu webu
      • zmenšení zatížení vlastního serveru/hostingu
      • ochrana před špatnou návštěvností jako jsou spammeři, špatně napsaní roboti atd.
      • web vždy online (trvalá dostupnost webu i při výpadku hostingu)
    • negativní zkušenosti a problémy psané na webu (viz "cloudflare drop in traffic", "cloudflare traffic decrease" a další podobné fráze)
      • cloudflare adsense:
        • pokles příjmů z adsense
        • některým byl dokonce Adsense zrušen
        • menší míra prokliků a větší procento neuznaných kliků
        • snížení návštěvnosti
        • Problém může být v tom, že návštěvnost jde přes proxi cloudflare, a tak se zobrazují nerelevantní reklamy a google se ukazuje jedna IP. Aby se tomuto předešlo, funkce Rocket Loader musí být vypnuta a na apache musí být nainstalován mod_cloudflare, v robots.txt by měl být povolen AdSense crawler. jinak hrozí zrušení adsense účtu.
      • cloudflare a návštěvnost
        • snížení návštěvnosti
        • pokles pozice v Google
        • Důvodů je také více, cloudflare na web nepustí každého, buď ho úplně zablokuje, nebo požaduje vyplnění antispamového kódu, nebo mu ukáže nějakou chybovou stránku. Cloudflare "nějak" blokuje robota Google a ten nemůže pořádně procházet web. Cloudflare prý "krade" návštěvníky. Po navštívení své stránky byl "prý" někdo přesměrován na nějakou cizí stránku s půjčkami :(
  • aws.amazon.com/cloudfront/pricing/ – zdarma jen první rok od registrace


Příklad nastavení .htaccess souboru:

  • First byte time (Zrychlení prvního načítaného "bajtu"):
  • # Turn on compression ("Fist Byte Time" webpagetest.org)
    <ifModule mod_gzip.c>
      mod_gzip_on Yes
      mod_gzip_dechunk Yes
      mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
      mod_gzip_item_include handler ^cgi-script$
      mod_gzip_item_include mime ^text/.*
      mod_gzip_item_include mime ^application/x-javascript.*
      mod_gzip_item_exclude mime ^image/.*
      mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
    </ifModule>
  • Cache static content yes
  • # Cache static content (webpagetest.org)
    <FilesMatch \.(jpe?g|gif|bmp|png|ico)$>
      # No mod_headers
      <IfModule !mod_headers.c>
        # No mod_expires
        <IfModule !mod_expires.c>
          # Use ETags.
          FileETag MTime Size
        </IfModule>
      </IfModule>
      # Use Expires Directive.
      <IfModule mod_expires.c>
        # Do not use ETags.
        FileETag None
        # Enable expirations.
        ExpiresActive On
        # Cache all files for 1 week after access (A).
        ExpiresDefault A604800
      </IfModule>
      <IfModule mod_headers.c>
        # Do not use etags for cache validation.
        Header unset ETag
        <IfModule !mod_expires.c>
          # Set a Cache-Control header to 1 week.
          Header set Cache-Control "max-age=604800, no-transform, public"
        </IfModule>
        <IfModule mod_expires.c>
          Header append Cache-Control "no-transform, public"
        </IfModule>
      </IfModule>
    </FilesMatch>