WordPress na IIS a WP Super Cache

  • 0
Wolny Wordpress - miniatura

WordPress na IIS a WP Super Cache

Facebooktwittergoogle_pluslinkedinmail

WordPress jako platforma jest bardzo elastyczna i umożliwia dostosowanie działania do wielu wymagań. Niestety ta cecha wiąże się z istotną wada – WordPress oparty jest o PHP, więc każda odsłona strony wiąże się z zasobożernym i długotrwałym procesem uruchamiania skryptów. W moim przypadku opóźnienie związane bezpośrednio z PHP wynosiło w zależności od obciążenia serwera pomiędzy sekundą a dwoma, więc pokusiłem się o próbę przyśpieszenia działania serwera. WP Super Cache było moim ostatecznym wyborem – produkuje statyczne strony HTML-owe, więc problem PHP jest skutecznie wyeliminowany.

 

Moje próby przyspieszenia działania serwera rozpocząłem od testów z wbudowaną funkcjonalnością IIS. Najlepsze efekty uzyskałem przy pomocy funkcji output-cache, dzięki której pliki i wyniki ich działania są przechowywane w pamięci RAM, minimalizując czas odpowiedzi serwera. Niestety, output-cache słabo współpracuje z stronami aktywnymi, opartym o WordPress/PHP. W wyniku tego administrator staje w obliczu kompromisu – wydajność serwera a opóźnienie w odświeżeniu treści strony www. Także czas reakcji systemu na działania użytkownika w przypadku tej metody jest bezpośrednio związany z ustawionym czasem odświeżenia pliku pamięci podręcznej – istnieje duże niebezpieczeństwo że użytkownik nie widząc swoich komentarzy lub postów wielokrotnie dodaje treść. To dlatego w moim przypadku po uwzględnieniu minusów tego rozwiązania, zdecydowałem się zainstalować wtyczkę WP Super Cache. I tutaj natknąłem się na problemy, bo w Internecie praktycznie brak materiałów na temat instalacji WP Super Cache na zestawie WordPress/IIS, a standardowa instalacja WP Super Cache jest przystosowana do Apache i po prostu nie działa.

 

O ile w przypadku Linuxa procedura instalacji WP Super Cache jest prosta, w przypadku Microsoft Server 2012 i IIS niełatwo jest znaleźć kompletny tutorial. Ta tematyka nie jest w bezpośrednim centrum moich zainteresowań ale ponieważ spędziłem trochę czasu na próbach pełnej instalacji postanowiłem się podzielić moimi doświadczeniami, z cichą nadzieją że uda mi się zaoszczędzić poszarpanej czupryny biednej duszy administratora IT. Podczas poniższych operacji nasza strona będzie niedostępna przez pewien czas, polecam więc ich wykonywanie w wybranym oknie małego ruchu.

Zaczynajmy:

  1. Robimy pełną kopię zapasową WordPress i serwera.
  2. Instalujemy na IIS moduł URL Rewrite 2.0 korzystając z instalatora Web Platform albo http://www.iis.net/downloads/microsoft/url-rewrite
    WP SuperCache - URL rewrite
  3. Instalujemy WP Super Cache (ale nie włączamy wtyczki).
  4. Sprawdzamy ustawienia linków bezpośrednich w WordPressie. Zestaw reguł przepisywania url jest dostosowany do ustawienia „Dzień i nazwa”.
    WP SuperCache ustawienia bezpośrednich odnośników
     
    Ewentualnie możemy użyć „Własnego formatu” i wpisać poniższy format:

    /%year%/%monthnum%/%day%/%postname%/

    Gdy mamy ustawiony inny format możemy dostosować do niego reguły przepisywania adresów albo zmienić to ustawienie (drugi wybór może się wiązać z całkowitym odświeżeniem indeksu wyszukiwarek).

  5. Dodajemy reguły przepisywania adresów (używając URL Rewrite), przygotowując się do włączenia WP Super Cache.
    1. Plik web.config w katalogu głównym witryny – WP Super Cache będzie działało jako reverse-proxy
    2. <system.webServer>
       <rewrite>
       <rules>
       <rule name="WP super cache Windows WordPress" stopProcessing="true"><br />
       <match url="(.*)" /><br />
       <conditions logicalGrouping="MatchAll"><br />
       <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /><br />
       <add input="{QUERY_STRING}" pattern=".*=.*" negate="true" /><br />
       <add input="{QUERY_STRING}" pattern=".*attachment_id=.*" negate="true" /><br />
       <add input="{HTTP_COOKIE}" pattern="^.*(comment_author_|wordpress|wp-postpass_).*$" negate="true" /><br />
       <add input="{DOCUMENT_ROOT}/wp-content/cache/supercache/{HTTP_HOST}/{R:1}index.html" matchType="IsFile" /><br />
       </conditions><br />
       <action type="Rewrite" url="wp-content/cache/supercache/{HTTP_HOST}/{R:1}index.html" /><br />
       </rule>
       </rules>
      </rewrite>
      <system.webServer>
    3. Tworzymy nowy plik web.config w katalogu wp-content\cache i dodajemy poniższe reguły
    4. <?xml version="1.0" encoding="UTF-8"?>  
      <configuration>  
      	<system.webServer> 
      		<httpProtocol>  
      			<customHeaders>  
      				<add name="Cache-Control" value="max-age=3000, must-revalidate" />  
      			</customHeaders>  
      		</httpProtocol>  
      	</system.webServer>  
      </configuration>  
      
  6. Uruchamiamy WP Super Cache i testujemy czy działa poprawnie
    WP SuperCache - uruchomienie wtyczki WP SuperCache
  7. Odświeżamy stronę kilkakrotnie, korzystając z niezalogowanej sesji. Powinniśmy zauważyć zdecydowane przyśpieszenie działania strony, a katalog \wordpress\wp-content\cache zapełni się statycznymi plikami pamięci podręcznej.

 
That’s all folks!


O autorze

Sławomir Czop

Pasjonat IT i telekomunikacji, z ponad dwunastoletnim doświadczeniem w branży operatorskiej Tier1. Specjalizacja – nowoczesna komunikacja - VoIP i Skype dla firm. Od 2015 w Polsce, gdzie oprócz pasji telekomunikacyjnej kontynuuje motoryzacyjne i kolarskie hobby.

Skomentuj artykuł