Jak zapobiec buforowaniu plików http w Apache httpd (MAMP)

Rozwijam jednostronicową aplikację Javascript w MAMP. Moje pliki szablonów JavaScript i HTML są buforowane między żądaniami.

Czy istnieje prosty sposób na wskazanie w MAMP, że chcę zapobiec buforowaniu plików http? Może z .htaccess plikiem? Gdzie umieścić .htaccess lub zmodyfikować wirtualny host dla MAMP na Macu?

Author: Rishabh, 2012-07-18

4 answers

Próbowałeś tego? Powinien działać zarówno w .htaccess, httpd.conf i w VirtualHost (zwykle umieszczane w httpd-vhosts.conf, jeśli zostały włączone z httpd.conf)

<filesMatch "\.(html|htm|js|css)$">
  FileETag None
  <ifModule mod_headers.c>
     Header unset ETag
     Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
     Header set Pragma "no-cache"
     Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
  </ifModule>
</filesMatch>

100% zapobiega buforowaniu Plików

Jest to podobne do tego, jak reklamy google wykorzystują header Cache-Control: private, x-gzip-ok="" > aby zapobiec buforowaniu reklam przez proxy i klientów.

Z http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html

I opcjonalnie dodać rozszerzenie dla plików szablonów, które pobierasz, jeśli używasz rozszerzenia innego niż .html.

 276
Author: Charlie Rudenstål,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-30 15:37:16

Na podstawie przykładu tutaj: http://drupal.org/node/550488

Poniższe prawdopodobnie zadziałają .htaccess

 <IfModule mod_expires.c>
   # Enable expirations.
   ExpiresActive On

   # Cache all files for 2 weeks after access (A).
   ExpiresDefault A1209600

  <FilesMatch (\.js|\.html)$>
     ExpiresActive Off
  </FilesMatch>
 </IfModule>
 5
Author: Frank Farmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-19 01:32:37

Miałem ten sam problem, ale znalazłem dobre rozwiązanie tutaj: Zatrzymaj buforowanie dla PHP 5.5.3 w MAMP

Zasadniczo znajdź php.plik ini i skomentuj linie OPCache. Mam nadzieję, że ta alternatywna odpowiedź pomoże również innym.

 3
Author: acarito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:04

Bez mod_expires trudniej będzie ustawić nagłówki wygaśnięcia w plikach. Dla czegokolwiek wygenerowanego możesz z pewnością ustawić domyślne nagłówki odpowiedzi, wykonując zadanie mod_expires w ten sposób:

<?php header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); ?>

(wzięte z: odpowiedź Stack Overflow z @ brianegge , gdzie rozwiązanie mod_expires jest również wyjaśnione)

Teraz to nie będzie działać dla plików statycznych , Jak Twoje pliki javascript. Co do plików statycznych to jest tylko apache (bez wygasania moduł) pomiędzy przeglądarką a plikiem źródłowym. Aby zapobiec buforowaniu plików javascript, które odbywa się w przeglądarce, możesz użyć losowy token na końcu adresu URL js, coś w stylu ?rd=45642111, więc adres URL wygląda następująco:

<script type="texte/javascript" src="my/url/myjs.js?rd=4221159546">

Jeśli ten adres URL na stronie jest generowany przez plik PHP, możesz po prostu dodać losową część za pomocą PHP. Ten sposób randomizowania adresu url przez po prostu dodanie losowych parametrów ciągów zapytań jest podstawową rzeczą upôn no-cache ustawienie żądania ajax jQuery na przykład. Przeglądarka nigdy nie uzna 2 adresów URL o różnych ciągach zapytań za takie same i nigdy nie użyje wersji buforowanej.

EDIT

Zwróć uwagę, że powinieneś przetestować mod_headers . Jeśli masz mod_headers, możesz ustawić nagłówki Expires bezpośrednio za pomocą słowa kluczowego Header.

 2
Author: regilero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:48