2015-08-04 10 views
7

Minify działa dobrze dla mnie, ale po zmianie jednego z plików źródłowych otrzymuję białą pustą stronę. Odświeżanie strony nic nie zmienia. Odświeżanie bez buforowania (Strg + F5) rozwiązuje problem. Po jednym odświeżeniu bez buforowania mogę odświeżyć pamięć podręczną i działa.Minify zwraca białą stronę po zmianie pliku źródłowego

URL im wywołanie wygląda tak:

dev/min/min.php/js type = js & src% 5B0% 5D = ewOutlibs% 2Fjquery.min.js & src% 5B1%? 5D = ewOutlibs% 2Fcookie% 2Fjquery.cookie.js

min.php

<?php 
define('MINIFY_MIN_DIR', dirname(__FILE__)); 

// load config 
require MINIFY_MIN_DIR . '/config.php'; 

// autoload 
require $min_libPath . "/Minify/Loader.php"; 
Minify_Loader::register(); 

// caching 
Minify::setCache(
    isset($min_cachePath) ? $min_cachePath : '' 
    ,$min_cacheFileLocking 
); 

// get files to merge 
$aSrc = $_GET['src']; 

// replace shortened url with long url 
if (isset($_GET['type']) && $_GET['type'] === 'js') { 
    $aSrc = str_replace('ewOut', '//out/xxx/src/js/', $aSrc); 
} 

// build array 
$aSources = array(
    'files' => $aSrc, 
    'maxAge' => 31536000 // one year 
); 

try { 
    // compress, merge and serve new file 
    Minify::serve('Files', $aSources); 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} 

nagłówka prośby:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 
Cache-Control:max-age=0 
Connection:keep-alive 
Cookie:oxidadminprofile=0%40Standard%4010%401; oxidadminlanguage=de; sid_key=oxid; language=0; sid=crlrs8bqg21g6e33arsjq708k4; ZDEDebuggerPresent=php,phtml,php3 
Host:dev.teltec 
If-Modified-Since:Tue, 04 Aug 2015 12:35:59 GMT 
If-None-Match:"pub1438691759;gz" 
Upgrade-Insecure-Requests:1 
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36 

nagłówka odpowiedzi:

HTTP/1.1 304 Not Modified 
Date: Tue, 04 Aug 2015 12:36:04 GMT 
Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/0.9.8o mod_fcgid/2.3.9 
Connection: Keep-Alive 
Keep-Alive: timeout=5, max=99 
ETag: "pub1438691759;gz" 
Expires: Wed, 03 Aug 2016 12:36:04 GMT 
Cache-Control: max-age=31536000 
Vary: Accept-Encoding 
Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/ 
+0

Coś ciekawego w twoim error_log? Minify porównuje pliki mtimes z czasem serwera, aby zdecydować, czy pliki zostały zmienione. Upewnij się, że zmieniasz pliki, w których aktualizacje są aktualizowane. –

+0

'mtime' jest poprawnie aktualizowane. Jedyną interesującą linią w php_error.log jest [10-Aug-2015 07:09:45 UTC] PHP Ostrzeżenie: strtotime() [function.strtotime]: Nie jest bezpiecznie polegać na ustawieniach strefy czasowej systemu. Jesteś * wymagany *, aby użyć ustawienia date.timezone lub date_default_timezone_set(). Jeśli używałeś któregokolwiek z tych sposobów i nadal otrzymujesz to ostrzeżenie, najprawdopodobniej błędnie wpisałeś identyfikator strefy czasowej. Wybraliśmy "Europe/Paris" zamiast "2.0/DST" zamiast w min \ lib \ HTTP \ ConditionalGet.php on line 358'. – Chris

+0

Lokalnie zdefiniowałem Europę/Berlin jako strefę czasową, która obecnie działa. Ale problem nadal występuje na naszym serwerze pośredniczącym, który już zdefiniował strefę czasową w Europie/Berlinie. Dowolny pomysł? – Chris

Odpowiedz

1

The Katalog tmp w systemie stage nie był zapisywalny, więc Minify nie powiodło się z buforowaniem plików i zwrócono białą stronę. Głupi błąd. Działa lokalnie dobrze, ponieważ katalog tmp działał zgodnie z oczekiwaniami.

1

To dlatego, że serwer i/lub przeglądarka jest buforowanie go. Unieważnia pamięć podręczną, gdy źródło się aktualizuje, ale przeglądarka myśli, że nadal jest w pamięci podręcznej, próbuje się do niej odwołać, pokazuje puste, dopóki nie wymusisz odświeżenia (ctrl + F5). Jednym ze sposobów jest uczynienie adresu URL, którego używasz, aby uzyskać do niego dostęp, za pomocą numeru "wersji". Microsoft używa go wraz ze swoimi pakietami (zmiany hash, jeśli plik źródłowy został zmieniony), który automatycznie informuje przeglądarkę, aby pobrała "nową" kopię.

miałem ten sam problem z XML byłem zapewniając klientowi, który stawał się coraz ten sam egzemplarz, dopóki Właśnie dodałem numer wersji na końcu zmusza przeglądarkę zawsze pobrać nowy plik

+0

Czy nie powinno to być automatycznie rozwiązywane przez bibliotekę Minify? ' – Chris

+0

Nie. To zależy od sposobu, w jaki można uzyskać do niego dostęp, i, o ile wiem, twój URL nie może być wystarczająco unikalny dla przeglądarki lub serwera, w celu ustalenia, że ​​zawartość się zmieniła, więc jest zmuszona uzyskać nową kopię. Jest to widoczne, gdy musisz nacisnąć Ctrl + F5, aby go ponownie wczytać. Zrób sobie przysługę i przetestuj ją, dodając losowy parametr liczbowy do tego samego adresu URL i zobacz, czy to się dzieje, czy nie, aby udowodnić moją teorię. minify minify's, to nie robi "cache busting" dla ciebie :) – user3036342

+0

Minify ma zaimplementowany mechanizm buforowania i, o ile mi wiadomo, działa całkiem dobrze. Przeglądarka zawsze pobiera plik z pamięci podręcznej i jeśli zmienię jeden z plików źródłowych, Minify generuje nową wersję zminimalizowanego pliku.Więc wykrywa zmiany w plikach soruce i powinien następnie poprawnie dostarczyć nowy plik. Mogłem rozwiązać problem, definiując strefę czasową bezpośrednio w pliku php.ini, ale na naszym serwerze testowym problem nadal występuje, nawet przy tym ustawieniu. Może mój 'min.php' już zawiera błędy? – Chris

Powiązane problemy