Cytat(UDAT @ 30.04.2007, 10:57:42 )

Mam nadzieję, że były to konstruktywne uwagi i nie zostaną odczytane jako próbę zmieszania Ciebie z błotem
Skądże znowu. Twoje uwagi uważam za
niezwykle cenne i większość z nich mam zamiar wprowadzić w życie. Patrz niżej.
Cytat(UDAT @ 30.04.2007, 10:57:42 )

Przejrzałem kod i mam parę uwag (abstrahujując od zysków wydajnościowych):
1. Po uruchomieniu dostaję trochę komunikatów
Kod
Notice: Use of undefined constant sf_fdec1 - assumed 'sf_fdec1' in /home/UDAT/php_hypercacher_standard_v1.920_DEV.php on line 22
Notice: Use of undefined constant sf_dnchx - assumed 'sf_dnchx' in /home/UDAT/php_hypercacher_standard_v1.920_DEV.php on line 34
Notice: Use of undefined constant sf_cltx - assumed 'sf_cltx' in /home/UDAT/php_hypercacher_standard_v1.920_DEV.php on line 142
Zamiast if(sf_dnchx<1) użyj
defined" title="Zobacz w manualu PHP" target="_manual('sf_dnchx')
Hmmmm.... Wtedy będę musiał sprawdzać dwa warunki zamiast jednego. Najpierw defined() a potem jeszcze sprawdzenie czy (sf_dnchx<1). Sprawdzanie tylko czy coś jest zdefiniowane chyba nie będzie dobrą praktyką.
A czy sprawdzanie dwóch warunków nie będzie wolniejsze od sprawdzania jednego

Chyba muszę przeprowadzić benchmarki.
Cytat(UDAT @ 30.04.2007, 10:57:42 )

2.
<?php
if(sf_fdec1<1){ //Check if the function was previously declared - this is for situation where PHP Hypercacher code is placed many times in one sc
ript
[ciach]
define('sf_fdec1',1
); //Notify other PHP Hypercacher scripts (if there are some more in this PHP script) than this function is already declared, so they won't do it again and cause CRITICAL ERROR }
?>
Nie mógłbyś użyć
function_exists" title="Zobacz w manualu PHP" target="_manual?
W mordę. Że też na to nie wpadłem. W innych skryptach używam function_exists(), ale jakoś dziwnie tutaj nie przyszło mi do głowy.
Propozycja będzie wdrożona w jednej z następnych wersjiCytat(UDAT @ 30.04.2007, 10:57:42 )

3. Zamiast $_GET I $_POST możesz użyć $_REQUEST, a także zamiast
<?php
?>
i kolejnych
<?php
strpos($vh,$poszukiwany_string) ?>
To akurat było już proponowane.
Niestety nie da się tak. Musi istnieć rozróżnienie między przenoszeniem wartości w polach GET i POST. Przecież w jakimś skrypcie strona może wyświetlać się odmiennie w zależności czy jakaś wartość jest w tablicy GET czy POST.
Cytat(UDAT @ 30.04.2007, 10:57:42 )

sprawdzaj za pomocą
in_array" title="Zobacz w manualu PHP" target="_manual lub
isset" title="Zobacz w manualu PHP" target="_manual($_REQUEST[$poszukiwany_string] ) w zależności gdzie chcesz szukać tych "parametrów"
To było już proponowane. Zastanawiam się nad tym i myślę że wdrożę to w jednej z następnych wersji.
Propozycja będzie wdrożona w jednej z następnych wersjiCytat(UDAT @ 30.04.2007, 10:57:42 )

4. Na samym końcu masz:
<?php
if(sf_dnchx<1){ //If cache is ON, then add debug message saying that cache is ON
$m.='CH_ON, '.$j;
}
else{ //If cache is OFF, then add debug message saying that cache is OFF
$m.='CH_OFF, '.$j;
}
?>
W każdym wypadku $m w ostatniej linii jest ustawione na stringa, tak więc zawsze if(m) będzie spełnione
100% racji, ale nie zakładam że komunikaty DEBUGgowania będą w tym skrypcie wiecznie...
Z góry zakładam że ktoś może je wyciąć. Optymalizacja optymalizacją, ale pewna funkcjonalność też powinna być zachowana...
Hmmm.... pomyślę o tymCytat(UDAT @ 30.04.2007, 10:57:42 )

5. Czemu wychodzisz z błędnego założenia, że wszyscy chcą mieć na samym końcu stopkę do twojego skryptu, jeśli są takie wymagania licencyjne nie prościej byłoby pozostawić decyzję co do umiejscowienia linku zwrotnego programiście? Wymuszasz w ten sposób modyfikację skryptu przez potencjalnych użytkowników, chcących zachować jakieś standarty HTML'a czy XHTML'a.
0. Licencja PHP Hypercachera
nie wymaga ani nie nakazuje umieszczania tego linka w stopce. Jednakże
byłoby mi bardzo miło gdybyś używając Hypercachera, odwdzięczył się w jakiś sposób za pracę włożoną w mój projekt.
1. Nie każdy zawsze pamięta o tym żeby dodać linka do stopki swojej strony, a nawet
wielu ludzi nie zrobi tego ze zwykłego lenistwa lub braku czasu2. Nie każdy potrzebuje SUPER-STRICTowego HTMLa z validacją. Nie każdego to obchodzi (a większości zwykłych ludzi i webmasterów to zupełnie nie obchodzi)
3. Jak ktoś już jest programistą/webmasterem, zna się na tym i go to obchodzi to może sobie bezproblemowo wyciąć. Licencja tego nie zabrania.
4. CMS
PHP Fusion działa w identyczny sposób. Standardowo wstawia linka do stopki, a jak komuś się nie podoba to może sobie wyciąć.
Stąd wziąłem właśnie ten pomysł.5. Gdybym chciał wstawić linka zgodnie z zasadami HTML, musiałbym do skryptu dodać coś takiego:
Kod
.str_replace('</body>', '[KOD HTML STOPKI HYPERCACHERA]</body>', ob_get_contents())
A to byłoby duuuużo wolniejsze, już nie mówiąc o tym że jakaś niepoprawna strona może nie mieć tagu kończącego </body> i ta metoda też zawiedzie. Więc dlatego
wolę pozostawić wycięcie lub przemieszczenie kodu w inne miejsce programiście który będzie Hypercachera używał.
Cytat(UDAT @ 30.04.2007, 10:57:42 )

6. Nie mógłbyś używać jakiś normalnych nazw zmiennych, jeśli chcesz użyj phpHypercacher_cacheRefreshTime, ale nie $vt, bo to strasznie zmniejsza czytelność kodu
Zgadzam się. Najpierw muszę jednak napisać optymalizator skryptów, który będzie automatycznie skracał nazwy zmiennych i wycinał niepotrzebne znaki (spacje, końce linii).
Wycinanie komentarzy, spacji i końców linii żeby wyprodukować wersję "obciętą" i tak już mnie morduje czasowo, a jeszcze gdybym miał nazwy zmiennych skracać przy każdej nowej wersji, to już by mnie w ogóle zabiło...

.
Optymalizator skryptów php jest już w drodze Propozycja będzie wdrożona w jednej z następnych wersjiCytat(UDAT @ 30.04.2007, 10:57:42 )

@SoofMan: Pytałeś czemu nikt tego wcześniej nie napisał? Otóż napisał zobacz
jpCache - ten sam pomysł, może też cache'ować w MySQL'u. Bardzo dawno nie używałem.
Hmmmm.... niby trochę podobne, ale moja koncepcja bardzo się różni od jpCache...
1. Nagłówek i stopka skryptu - tego nie ma w koncepcji jpCache
2. Maksymalna Prostota Użytkowania i pełna automatyzacja - o jpCache tego powiedzieć nie można
3. W hypercacherze nie ma żadnych includów ani klas
Cytat(UDAT @ 30.04.2007, 13:01:01 )

@SoofMan: Czemu nie zamkniesz funkcjonalności swojego skryptu w klasę, konfigurowalną przez np. settery, umożliwiając keszowanie nie tylko całych stron, ale i elementów?
Wersje przed 1.920 - bazowa i 1.0 RC1 Refresher mogą być używane wielokrotnie w kodzie (ponieważ nie używają STAŁYCH tylko zmiennych)...
A co do klasy, to jest całkiem dobry pomysł:
Propozycja będzie wdrożona w jakimś MODZie lub BRANCHu.
Niestety klasa nigdy nie będzie tak szybka jak kod wklejony do pliku, ale co zrobić...