Mod_rewrite miatt miért frissül az oldal?
2019-06-28T21:42:27+02:00
2019-06-30T09:16:36+02:00
2022-07-19T02:42:06+02:00
mrdexter
Sziasztok,

 Tárhely szolgáltatóm jelezte, hogy mysql-t megizzasztja csúcsidőben a honlapom, ezért elkezdtem nyomozgatni. Létrehoztam egy "latogatok" táblát, hogy mentegessem IP címeket, hátha valami robotféle próbál szívatni, és tesztelgetés közben azt vettem észre, hogy egy oldalbetöltéskor 15-20 bejegyzést is pakol ebbe a táblába, megpróbáltam egy olyan oldalt ahol kevés a tartalom, ott már csak 2 bejegyzést. Észrevettem, hogy az egyik css hivatkozásom nem létezik, töröltem a sort, ezután már csak egy sor ment a látogatókba és mintha oldalbetöltés is gyorsabb lenne.
 További tesztelgetések után jutottam arra a zavarba ejtő következtetésre, hogy annyiszor frissül az oldal, ahány file-t mod_rewrite megpróbál átírni. Ezt főleg azért nem értem, mert elég régóta csinálgatom ezt az oldalt, és nem hiszem el, hogy eddig nem jött elő ez a hiba, sok funkciója van az oldalnak pedig.
 Nem tudom, hogy lehet-e linkelni az oldalt esetleg? 

Előre is köszönöm a segítséget.
Mutasd a teljes hozzászólást!
Valami hasonlóan hozd össze a .htaccess -t, ha olyan statikus fájlt keresne ami nem létzezik,
akkor adsz egy default üres fájlt, vagy kép esetén pl. egy No Image feliretú képet...
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.(js)$ "assets/js/no-java.js" [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.(css)$ "assets/css/no-style.css" [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.(jpg|jpeg|png|gif)$ "assets/images/no-image.png" [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) index.php?x=$1 [QSA] </IfModule>
Mutasd a teljes hozzászólást!

  • Nem az oldalt kéne linkelned szerintem, hanem az Apache konfigodat (vagy legalább a RewriteRule-okkal foglalkozó részét). Valószínűleg az van, hogy olyan URL-eket is PHP kódhoz irányít, amit te nem szeretnél, és az így keletkező PHP futtatások okozzák a nem kívánt terhelést.
    Mutasd a teljes hozzászólást!
  • Javaslom a Cloudflare - The Web Performance & Security Company használatát.
    https, cache, ip rejtés ingyen.
    Mutasd a teljes hozzászólást!
  • Köszi, igazad lesz.
    Nekiálltam lecserélgetni a js-sel való "képmeglét csekkolgatást" php-ra, szerencsémre, csak a főoldalon jött elő a hiba, szóval sikerült már "megoldanom", de ha értesz RewriteRule-hoz, akkor esetleg ránézhetnél .htaccess-esemre, hogy mit ronthattam el:

    <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) index.php?x=$1 [QSA] </IfModule> <Files 403.shtml> order allow,deny allow from all </Files>
    Mutasd a teljes hozzászólást!
  • js-sel való "képmeglét csekkolgatást"

    Tehát ha volt 30 képed egy oldalon akkor indítottál 30 új HTTP kérést, amik a rewrite szabályaid miatt meghívták az index.php-t. Harmincszor. Gratulálok... A minimum az lenne hogy statikus állományokat (js, css, képek, stb) nem rewrite-olsz, és máris elhárítottad a hibát.
    Mutasd a teljes hozzászólást!
  • DJ_Tacee már felállította a helyes diagnózist. Mivel a nem létező fájlokra/könyvtárakra jövő kéréseket a PHP fájlodra irányítod, minden hibásan megadott URL ezt fogja meghívni. Ezt még tetézed is azzal, hogy te magad kezdeményezel olyan kérést, ami nem létező fájlokat próbál meghívni.

    Célszerű lenne úgy kialakítani az URL struktúrát, hogy a statikus fájlokat már az URL-jük alapján meg lehessen különböztetni (pl. a CSS fájlok lehetnek az oldalad.hu/css/ alatt, a JS fájlok az oldalad.hu/js/ alatt, de ez csak egy példa). Ez után már csak azokat az URL-eket kell a PHP fájlodra irányítani, ami ezekre a mintákra nem illeszkedik, a nem létező statikus fájlokra pedig majd az Apache kiszolgálja a 404-et, a PHP-hoz képest minimális erőforrásból.
    Mutasd a teljes hozzászólást!
  • Valami hasonlóan hozd össze a .htaccess -t, ha olyan statikus fájlt keresne ami nem létzezik,
    akkor adsz egy default üres fájlt, vagy kép esetén pl. egy No Image feliretú képet...
    <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.(js)$ "assets/js/no-java.js" [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.(css)$ "assets/css/no-style.css" [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.(jpg|jpeg|png|gif)$ "assets/images/no-image.png" [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) index.php?x=$1 [QSA] </IfModule>
    Mutasd a teljes hozzászólást!
  • Hmm, ez miben jobb, mint 404-es hibakódot adni? Esetleg képnél még megértem, hogy hibás kép helyett valami "tartalék" képet szolgál ki valaki, hogy ne tűnjön hibásnak az oldal, de a hiányzó JS vagy CSS fájloknál úgyse ad hibajelzést a böngésző (kivéve a konzolon, ott meg jobb is, a hibakeresés megkönnyítésére).
    Mutasd a teljes hozzászólást!
  • Nem tudom elhinni, hogy eddig így ment az oldalam, most pöcre betölt mindent, nagyon szépen köszönöm!
    Remélem mérőkódokat nem befolyásolta eddig. Analytics pénteken 100k munkamenetet mért, szombaton már csak 70k-t, ilyen nem nagyon szokott lenni. Végén még visszarakom a bugomat a hirdetők miatt :)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd