[JS] wordt een geinclude .js bestand gecached?

Pagina: 1
Acties:

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Een .js bestandje die geincluded wordt in een html of php bestand wordt die ook opgeslagen in de cache en kan deze hergebruikt worden ook als er dingen aan de .html of .php veranderd zijn?

Kortom, is een include .js bestand cachebaar of wordt deze ten alle tijde opnieuw geladen (opgehaald)?

Station van Gerwin Prins op Apple Music


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 20:02

RM-rf

1 2 3 4 5 7 6 8 9

Op zondag 28 april 2002 02:41 schreef Gerwin het volgende:
Een .js bestandje die geincluded wordt in een html of php bestand wordt die ook opgeslagen in de cache
zowel een .js, een .css, of .swf (of welke file je via http: included) wordt gecached als de UA hierop is ingesteld en de server hieraan een juiste header meestuurd.

ook al is de file geincluded in een dynamisch gegenereerde pagina die meestal een no-cache-header heeft; de js file zal ge-cached blijven. (meestal zullen enkel last-modified times door UA vergeleken worden)
kan deze hergebruikt worden ook als er dingen aan de .html of .php veranderd zijn?
eehm, ja neem ik aan, wilde je dan iedere keer een nieuwe file maken?

het includen van externe js of css om deze voor meerdere pagina's te laten functioneren (voor .js als een lib bv.) is de belangrijkste reden hiervoor te kiezen (behalve natuurlijk ook overzichtelijkheid)

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08-09 22:30

mulder

ik spuug op het trottoir

Ik denk dat er dynamische elementen in het js scriptje zitten, en dat je die met php wilt aanpassen. Je kunt gewoon een php file includen met daarin je javascript.
bv:
code:
1
2
3
4
function jsFunction {
  var uselessVar = <? echo $data; ?>;
  return uselessVar;
}

oogjes open, snaveltjes dicht


  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Op zondag 28 april 2002 03:21 schreef RM-rf het volgende:

[..]

zowel een .js, een .css, of .swf (of welke file je via http: included) wordt gecached als de UA hierop is ingesteld en de server hieraan een juiste header meestuurd.

ook al is de file geincluded in een dynamisch gegenereerde pagina die meestal een no-cache-header heeft; de js file zal ge-cached blijven. (meestal zullen enkel last-modified times door UA vergeleken worden)
[..]

eehm, ja neem ik aan, wilde je dan iedere keer een nieuwe file maken?

het includen van externe js of css om deze voor meerdere pagina's te laten functioneren (voor .js als een lib bv.) is de belangrijkste reden hiervoor te kiezen (behalve natuurlijk ook overzichtelijkheid)
Met hergebrui bedoel ik dat ik bijvoorbeeld een js include op een php pag:
PHP:
1
<? echo("<script language=\"javascript\" src=\"" .  echo($datum) . ".js\"></script>");?>

de file heeft dan als naam zoiets 20021005.js ofzo. Maar de volgende dag is die file niet veranderd maar is er gewoon een file voor de volgende dag bijgekomen. Zoals ik het begrijp wordt het bestandje wel degelijk opgeslagen in de cache. Is het dan toch verstandig een header mee te geven in die .js file dus eigenlijk van die .js een .php te maken met javascript taal erin en een header met php?

Station van Gerwin Prins op Apple Music


Verwijderd

Wellicht dat je het kunt faken, door de .js aan te roepen met js?anticache=randominteger

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Op zondag 28 april 2002 17:59 schreef Gordijnstok het volgende:
Wellicht dat je het kunt faken, door de .js aan te roepen met js?anticache=randominteger
Nee ik wil juist dat ie in de cache komt. :)

Station van Gerwin Prins op Apple Music


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08-09 22:30

mulder

ik spuug op het trottoir

Wat is precies je doel? Ik snap niet goed wat je wilt bereiken, of misschien begrijp jij zelf iets niet.

oogjes open, snaveltjes dicht


  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Op zondag 28 april 2002 18:23 schreef Don Facundo het volgende:
Wat is precies je doel? Ik snap niet goed wat je wilt bereiken, of misschien begrijp jij zelf iets niet.
Kijk ik heb een website... die is gemaakt in php. Elke dag komt er een stukje bij op de site dat staat in een .js bestandje. De laatste 7 dagen schuiven telkens naar beneden. Nu wil ik dat die 6 dagen die dus al bekend waren uit de cache gehaald worden in de 6 .js bestandjes die al bekend waren.

Station van Gerwin Prins op Apple Music


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

erhmm...

dit is er dus zoeen uit de categorie:
waarom makkelijk doen als het moeilijk kan
:Z

[edit]
Oftewel: je kan beter een andere oplossing zoeken dan deze, want je kan niet regelen wat er voor hoeveel dagen gecacht moet worden voor een client. (jah, het kan wel, maar dan zit je nog met proxy's enzo.)

Include lekker gewoon alles in 1 bestandje. scheelt je een hoop moeite.

Stop uploading passwords to Github!


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08-09 22:30

mulder

ik spuug op het trottoir

Op zondag 28 april 2002 18:27 schreef Gerwin het volgende:

[..]

Kijk ik heb een website... die is gemaakt in php. Elke dag komt er een stukje bij op de site dat staat in een .js bestandje. De laatste 7 dagen schuiven telkens naar beneden. Nu wil ik dat die 6 dagen die dus al bekend waren uit de cache gehaald worden in de 6 .js bestandjes die al bekend waren.
Word denk ik tijd om je wat meer te verdiepen in webdevelopment. .js duidt op javascript files. Dit is code die client-side draait. Meestal gebruikt om interactiviteit met de gebruiker clientside mogelijk te maken. Niet voor het opbouwen van de website, dat doe je met php + html. Met php kun je wel dynamisch javascript aanmaken. Snap ook niet wat die .js bestandjes allemaal moeten doen..

oogjes open, snaveltjes dicht


Verwijderd

Op zondag 28 april 2002 19:38 schreef Don Facundo het volgende:

[..]

Word denk ik tijd om je wat meer te verdiepen in webdevelopment. .js duidt op javascript files. Dit is code die client-side draait.
Kan ook ServerSide draaien hoor :P
Meestal gebruikt om interactiviteit met de gebruiker clientside mogelijk te maken. Niet voor het opbouwen van de website, dat doe je met php + html.
1) document.write
2) php maakt geen website op dat doet HTML, php translated alleen naar html
3) Je hoeft het niet met PHP te doen, het kan ook met JSP, ASP, CFM, etc. :)

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08-09 22:30

mulder

ik spuug op het trottoir

:D Ga mij effe opfokken! Dat weet ik ook wel!
Probeer de topicstarter even wat in banen te leiden....

oogjes open, snaveltjes dicht


  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Volgens mij is het nog niet helemaal duidelijk. Ik heb 6 bestandjes waarin dingen dedefinceert staan die op de site wordt gebruikt, lappen tekst enz. Elke dag komt er een lap tekst bij, maar lappen van 6 dagen geleden blijven hetzelfde deze staan in aparte .js bestandjes.

Nu wil ik dat ik bijvoorbeeld vandaag de website bezoek dat al die .js in de cache komen en als ik morgen de site bezoek dat ik enkel de index.php hoef op te halen en één nieuw bestandje en niet de 6 bestandjes.

Ven webdevelopment weet ik al genoeg hoor, alleen rijst bij mij die vraag op of het mogelijk is .js bestandjes te cachen zodat de bezoeker niet telkens alles hoeft te laden, waardoor de website niet 30 seconden duurt om te laten, maar 3.

Station van Gerwin Prins op Apple Music


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op maandag 29 april 2002 15:43 schreef Gerwin het volgende:
Ven webdevelopment weet ik al genoeg hoor, alleen rijst bij mij die vraag op of het mogelijk is .js bestandjes te cachen zodat de bezoeker niet telkens alles hoeft te laden, waardoor de website niet 30 seconden duurt om te laten, maar 3.
Als je voor 30 seconde laadtijd aan text op 1 pagina hebt dan zou ik me eens verdiepen in de term navigatie :P

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08-09 22:30

mulder

ik spuug op het trottoir

Volgens mij is het nog niet helemaal duidelijk. Ik heb 6 bestandjes waarin dingen dedefinceert staan die op de site wordt gebruikt, lappen tekst enz. Elke dag komt er een lap tekst bij, maar lappen van 6 dagen geleden blijven hetzelfde deze staan in aparte .js bestandjes.

Nu wil ik dat ik bijvoorbeeld vandaag de website bezoek dat al die .js in de cache komen en als ik morgen de site bezoek dat ik enkel de index.php hoef op te halen en één nieuw bestandje en niet de 6 bestandjes.

Ven webdevelopment weet ik al genoeg hoor, alleen rijst bij mij die vraag op of het mogelijk is .js bestandjes te cachen zodat de bezoeker niet telkens alles hoeft te laden, waardoor de website niet 30 seconden duurt om te laten, maar 3.
Als er zoiets gecached moet worden zal dat serverside zijn, niet clientside, want je weet niet of de gebruiker die bestanden al heeft. Het feit dat het 30 seconden duurt kan heel goed als je met javascript de pagina opbouwt. Even een klein voorbeeldje hoe je met pseudo php zoiets zou doen:
code:
1
2
3
4
5
6
  <header>
  result = query("SELECT title, body, date FROM news ORDER BY PostDate DESC LIMIT 0, 6");
  while ($row = fetch(result)) {
    makenewspost($row);
  }
  </header>

Dit is sneller, betrouwbaarder dan die hele vreemde manier waarop jij het nu doet.

oogjes open, snaveltjes dicht


Verwijderd

Op maandag 29 april 2002 18:06 schreef Don Facundo het volgende:

Als er zoiets gecached moet worden zal dat serverside zijn, niet clientside, want je weet niet of de gebruiker die bestanden al heeft.
Server-side cachen levert voor de client geen voordeel op, alleen voor de server. Client-side cachen voorkomt dat de browser een pagina/script/stylesheet opnieuw gaat ophalen, en dit geeft een flinke boost bij het later nog eens laden van de pagina, daar gecachede bestanden al client-side staan.
Het feit dat het 30 seconden duurt kan heel goed als je met javascript de pagina opbouwt.
Waar is deze uitspraak op gebaseerd? Het ophalen van een pagina kost de meeste tijd, het weergeven is slechts een kleine fractie hiervan.
En ik heb geen flauw idee waarom je nu met PHP/SQL komt aanzetten in een topic dat over cachen van javascript bestanden gaat.

It doesn't make any sense.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08-09 22:30

mulder

ik spuug op het trottoir

Server-side cachen levert voor de client geen voordeel op, alleen voor de server. Client-side cachen voorkomt dat de browser een pagina/script/stylesheet opnieuw gaat ophalen, en dit geeft een flinke boost bij het later nog eens laden van de pagina, daar gecachede bestanden al client-side staan.
Gelukkig doet dat het wel. Wil je zeggen dat het voor de client niet uitmaakt als de pagina op de server al klaar staat of dat ie nog gegenereerd moet worden? Sommige methodieken ondersteunen zelfs het cachen van queries. Lijkt me volkomen logisch dat wanneer alles op de server sneller verwerkt wordt, het ook sneller bij de client voor de deur staat.
Waar is deze uitspraak op gebaseerd? Het ophalen van een pagina kost de meeste tijd, het weergeven is slechts een kleine fractie hiervan.
En ik heb geen flauw idee waarom je nu met PHP/SQL komt aanzetten in een topic dat over cachen van javascript bestanden gaat.

It doesn't make any sense.
Ga maar lekker een pagina in javascript maken, alle data lekker in variablen, opbouwen van de elementen met js. Een beproefde methode. Not. En als je het topic leest zie dat hij het zelf over php heeft. Meerdere malen.

Makes perfect sense.

oogjes open, snaveltjes dicht


Verwijderd

Misschien begrijp je dit topic beter als je de source ervan bekijkt :{
Rechtermuisknop, View Source :Y)

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08-09 22:30

mulder

ik spuug op het trottoir

En waar is die source?

Edit:
:D LEEG!

Edit2:
Maar ik weet waarom het gaat nu, i see. Maar dan nog probeert deze meneer iets wazigs volgens mij.

oogjes open, snaveltjes dicht


  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Ow ow ow... is dit nu zo moeilijk te snappen... nog één keer...

Ik heb op dit moment bijvoorbeeld de volgende bestandjes:

20021001.js 30kB
20021002.js 31kB
20021003.js 29kB
20021004.js 34kB
20021005.js 45kB
20021006.js 30kB

elke bestandje bevat data, tekst en variabelen...
elke dat komt er een nieuwe bij en deze wordt met een include op deze manier in een php code op de website geincluded:

<SCRIPT language="javascript" src="200210101.js"></SCRIPT>

de index.php veranderd dus met die javascript opdrachten en includes, elke dat schuift alles een dagje op.

Nu wil ik dat iemand die gister ook geweest is of eergister niet alle .js bestandjes moet ophalen. dus stel dat iemand geweest is en 20021001.js al heeft maar de rest nog niet dan wil ik dat die 20021001.js uit de cache komt. Maar hoe kan ik dat opgeven dat die ALTIJD gebeurd.

Station van Gerwin Prins op Apple Music


  • sirdupre
  • Registratie: Maart 2002
  • Laatst online: 27-04-2025
Gebruik je geen database ofzo?

Waarom zet je anders al je data anders niet gewoon in een database ipv. .js bestandjes?

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Op maandag 29 april 2002 21:04 schreef SirDupre het volgende:
Gebruik je geen database ofzo?

Waarom zet je anders al je data anders niet gewoon in een database ipv. .js bestandjes?
Huh? Database, die gebruik ik inderdaad al, maar ik wil de laadtijd voor bezoekers zo kort mogelijk maken. Gaat dat met een database? Ik dacht dat bezoekers dan alsnog alles moeten laden en niet de bestandjes (dagen) die ze al gelezen hebben of al geladen hebben opnieuw geladen moeten worden.

Station van Gerwin Prins op Apple Music


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 20:02

RM-rf

1 2 3 4 5 7 6 8 9

Op woensdag 01 mei 2002 01:04 schreef Gerwin het volgende:

Huh? Database, die gebruik ik inderdaad al, maar ik wil de laadtijd voor bezoekers zo kort mogelijk maken. Gaat dat met een database?
natuurlijk, maak een tabel aan "CREATE TABLE caching_webpage (INT caching_id AUTO_INCREMENT, CHAR(5) is_cached DEFAULT("true")) PRIMARY_KEY(caching_id)" en zet alle waardes op "true" :P

nee dus, caching wordt geregeld in de hedaer van een file;
je kunt met een serverside-taal de files laten genereren en daarbij gelijk de header zetten (pragma, cache-control, expires) danwel je kunt de webserver voor files deze standaard mee laten sturen.

voor een *NIX server kun je kijken naar .htaccess om per directory eventueel aan extensies headers mee te geven, of in een server als IIS en mogelijk iPlanet/websphere kun je in de webinterface dit ongetwijfeld regelen (al dan niet met beperkingen)

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Op woensdag 01 mei 2002 03:10 schreef RM-rf het volgende:

[..]

natuurlijk, maak een tabel aan "CREATE TABLE caching_webpage (INT caching_id AUTO_INCREMENT, CHAR(5) is_cached DEFAULT("true")) PRIMARY_KEY(caching_id)" en zet alle waardes op "true" :P

nee dus, caching wordt geregeld in de hedaer van een file;
je kunt met een serverside-taal de files laten genereren en daarbij gelijk de header zetten (pragma, cache-control, expires) danwel je kunt de webserver voor files deze standaard mee laten sturen.

voor een *NIX server kun je kijken naar .htaccess om per directory eventueel aan extensies headers mee te geven, of in een server als IIS en mogelijk iPlanet/websphere kun je in de webinterface dit ongetwijfeld regelen (al dan niet met beperkingen)
Dank je wel voor het antwoord en reactie, ik heb nog een tweetal vragen...
  • hoe kun je een .js een header meegeven? is het mogelijk javascriptbestandjes een .php extentie te geven bijvoorbeeld door met php de header mee te geven, ik heb geen toegan g tot de configuratie van de server...
  • wordt het bestandje door die include gecached ook als het bestand (index.php) veranderd is en opnieuw opgehaald wordt?

Station van Gerwin Prins op Apple Music


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 20:02

RM-rf

1 2 3 4 5 7 6 8 9

Op woensdag 01 mei 2002 17:49 schreef Gerwin het volgende:

[..]

Dank je wel voor het antwoord en reactie, ik heb nog een tweetal vragen...
  • hoe kun je een .js een header meegeven? is het mogelijk javascriptbestandjes een .php extentie te geven bijvoorbeeld door met php de header mee te geven, ik heb geen toegang tot de configuratie van de server...
  • wordt het bestandje door die include gecached ook als het bestand (index.php) veranderd is en opnieuw opgehaald wordt?
kennelijk waren mijn antwoorden in chinees, misschien moet ik deze keer in nederlands antwoorden;

1e vraag. hoe geef je bepaalde extensies een specifieke header mee?
Op woensdag 01 mei 2002 03:10 schreef RM-rf het volgende:
voor een *NIX server kun je kijken naar .htaccess om per directory eventueel aan extensies headers mee te geven
oftewel kijk eens op http://linux.oreillynet.com/pub/a/linux/2002/02/28/cachefriendly.html?page=2
.htaccess vereist geen admin-rechten en valt per directory in te stellen, vraag je host of je webserver .htaccess ondersteund

dit zou dan gaan met:
code:
1
2
    ExpiresActive on
    ExpiresByType text/javascript "access plus 1 year"

overigens staat voor meerdere webservers al per default de caching voor .js-files aan, extra definiering van cache-waardes is dus niet nodig, misschien is het beter om dat eerst te testen

2e vraag. blijft een bestand gecached, ook als de originele src veranderd?
Op zondag 28 april 2002 03:21 schreef RM-rf het volgende:
ook al is de file geincluded in een dynamisch gegenereerde pagina die meestal een no-cache-header heeft; de js file zal ge-cached blijven.
ja dus, er is in de cache geen link tussen documenten, met een bepaalde parent, dat zou een cache ook nogal overbodig maken, "plaatjes/afbeelding.gif" is dezelfde, of het nu vanaf "pagina1.html" danwel vanaf "pagina2.php" wordt aangeroepen.
een cache-header geldt enkel voor het dan ge-requeste document en niet voor via dat document gelinkede documenten.

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Op woensdag 01 mei 2002 22:41 schreef RM-rf het volgende:

[..]

kennelijk waren mijn antwoorden in chinees, misschien moet ik deze keer in nederlands antwoorden;

1e vraag. hoe geef je bepaalde extensies een specifieke header mee?
[..]

oftewel kijk eens op http://linux.oreillynet.com/pub/a/linux/2002/02/28/cachefriendly.html?page=2
.htaccess vereist geen admin-rechten en valt per directory in te stellen, vraag je host of je webserver .htaccess ondersteund

dit zou dan gaan met:
code:
1
2
    ExpiresActive on
    ExpiresByType text/javascript "access plus 1 year"

overigens staat voor meerdere webservers al per default de caching voor .js-files aan, extra definiering van cache-waardes is dus niet nodig, misschien is het beter om dat eerst te testen

2e vraag. blijft een bestand gecached, ook als de originele src veranderd?
[..]

ja dus, er is in de cache geen link tussen documenten, met een bepaalde parent, dat zou een cache ook nogal overbodig maken, "plaatjes/afbeelding.gif" is dezelfde, of het nu vanaf "pagina1.html" danwel vanaf "pagina2.php" wordt aangeroepen.
een cache-header geldt enkel voor het dan ge-requeste document en niet voor via dat document gelinkede documenten.
Aha, zo idd, :) dank je wel het is me duidelijk geworden... :)

Station van Gerwin Prins op Apple Music

Pagina: 1