[TYPO3-UG Denmark] HMENU gør side langsom

Søren Andersen hacksaw at zpeed.dk
Sun Feb 27 17:07:13 CET 2011


Og så fandt jeg ud af hvorfor den tog så lang tid om at lave min HMENU.

Det viste sig at jeg brugte en gammel version af realurl, som bruger
ereg_replace, der jo er deprecated i PHP 5.3. Det fik TYPO3 til at skrive i
sys_log tabellen FOR HVERT ENESTE MENUPUNKT! At skulle registrere fejl og
skrive 100 gange til databasen tog åbenbart sin tid. (En tabel som var
vokset til 2GB i størrelse da jeg opdagede det).

Løsningen var selvfølgelig at opdatere til nyeste version af realurl, hvor
ereg_replace ikke bliver brugt. Det hjalp helt vildt på hastigheden ved
first hit.

Med venlig hilsen
Søren Andersen.

-----Oprindelig meddelelse-----
Fra: typo3-ug-denmark-bounces at lists.typo3.org
[mailto:typo3-ug-denmark-bounces at lists.typo3.org] På vegne af Søren Andersen
Sendt: 11. februar 2011 00:50
Til: 'TYPO3 Usergroup Denmark'
Emne: Re: [TYPO3-UG Denmark] HMENU gør side langsom

For dem der er interesserede i en løsning.

Jeg lavede en hook til insertPageIncache, med en regex kopierer jeg min menu
og putter den i en fil "fileadmin/staticmenu.html".

Så lavede jeg en simpel userfunc, der tjekker om filen staticmenu.html
findes, hvis den gør returnerer den sand, hvis ikke så falsk.

Til sidst skulle der bare laves en hook som sletter filen staticmenu.html
når cache bliver tømt.

Det var kompliceret, men nu har jeg en menu som kun skal i cache én gang pr.
tømt cache i stedet for én gang pr. side pr. tømt cache.

Hvor er det dejligt med et CMS, der kan udvides efter selv det mest
specielle behov :)

Med venlig hilsen
Søren Andersen

-----Oprindelig meddelelse-----
Fra: typo3-ug-denmark-bounces at lists.typo3.org
[mailto:typo3-ug-denmark-bounces at lists.typo3.org] På vegne af Søren Andersen
Sendt: 8. februar 2011 00:25
Til: 'TYPO3 Usergroup Denmark'
Emne: [TYPO3-UG Denmark] HMENU gør side langsom

Hej alle

 

Jeg har en side som benytter sig af en dropdown menu. Dvs. at HTML koden for
alle menupunkter fremgår på alle sider.

 

Det stykke HTML der bliver lavet første gang menuen genereres er det samme
stykke HTML som skal vises overalt på hele hjemmesiden. Desværre lader det
til at TYPO3 regenererer koden på hvert eneste sideskift, og det tager
mildest talt en evighed på ”first load” når først en side har været vist én
gang bliver den hurtigt vist fra cache.

 

Det skyldes måske at jeg bruger en del betingelser i den måde jeg genererer
menuen på, da jeg gerne vil have nogle ikoner på afhængigt af om det er en
kategori-side eller et eksternt link.

 

Hvordan kan jeg gøre sådan at TYPO3 cacher min HMENU på tværs af alle sider?
Er der evt. en hook jeg kan udnytte, så jeg selv kan lave et stykke kode der
fanger HMENU’en første gang den laves efter cache er ryddet og derefter
serverer det samme HTML igen og igen indtil cache tømmes næste gang?

 

Koden ser således ud:

lib.mainMenu = HMENU

lib.mainMenu {

  1 = TMENU

  1 {

    expAll = 1

    wrap (

    <ul id="nav">

    <li><a href="/" onfocus="blurLink(this);">Forsiden</a></li>

    |</ul>

    )

    

    NO {

      wrapItemAndSub (

            <li>|</li>

      )

    }

  }

  

  2 < .1

  2 {

    wrap = <ul>|</ul>

    

    NO {

      wrapItemAndSub = <li>|</li>

 

      doNotLinkIt = 1

      stdWrap.cObject = CASE

      stdWrap.cObject {

        key.field = doktype

        default = TEXT

        default {

          field = nav_title // title

          typolink.parameter.field = uid

          typolink.ATagParams = class="parentItem"

          typolink.ATagParams.if {

            value.field = layout

            equals = 99

          }

          stdWrap.htmlSpecialChars = 1

        }

        

        # 4 = shortcut

        4 = TEXT

        4 {

          field = title

          typolink.parameter.field = shortcut

        }

        

        # 3 = external url

        3 = TEXT

        3 {

          field = title

          typolink.parameter.field = url

          typolink.extTarget = _blank

          typolink.ATagParams = class="externalItem"

        } 

      }

    }

  }

  

  3 < .2

  3 {

    wrap >

    stdWrap.wrap = <ul>|</ul>

    stdWrap.if.value.cObject = RECORDS

    stdWrap.if.value.cObject {

      tables = pages

      source.field = pid

      conf.pages = TEXT

      conf.pages.field = layout

    }

    stdWrap.if.equals = 99

  }

}

 

Med venlig hilsen

Søren Andersen

 

_______________________________________________
TYPO3-UG-Denmark mailing list
TYPO3-UG-Denmark at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-ug-denmark

_______________________________________________
TYPO3-UG-Denmark mailing list
TYPO3-UG-Denmark at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-ug-denmark



More information about the TYPO3-UG-Denmark mailing list