Embedded PHP in jquery
Pagina: « vorige 1 2 3 volgende »
Maar als je een flink pak JavaScript in een externe file hebt, dan kan je dat prima minifieen en laten cachen.
Uiteraard, dan wel. Maar met dynamische javascript is dat onzinnig, omdat je dat toch in je HTML parkeert. Daarbuiten zijn minifiers niet bepaald snel, en om dat iedere pageview te doen is al erg snel erg pijnlijk. Je bent dan meteen beperkt door de snelheid van je minifier, en al duurt het minifien maar een tiende van een seconde (en het duurt langer) dan vertraag je je website dus met diezelfde hoeveelheid.
Maar minifien doe je niet on-the-fly maar zodra je je website gaat uitrollen (deployen).
Klopt, maar dat kan niet als je javascript dynamisch is ;-)
Gewijzigd op 21/10/2016 22:46:57 door - Ariën -
Hopelijk zal Daniel de hint ook oppikken.
Gewijzigd op 21/10/2016 22:54:41 door Ben van Velzen
Verder lijkt er dus geen tool te zijn die het doet, althans niet waarvan iemand het hier weet, dus zoek maar even verder.
Quote:
Het is PHP en Javascript. leer dat nu eens een keer. Daar gaat niet niet over.
Daar gaat het juist *wel* over, want je kunt PHP niet behandelen zoals je javascript zou behandelen.
Nogmaals, jouw hele probleem is uitsluitend veroorzaakt doort jouw idee dat dit javascript is. Dat is het niet.
het heet *.php, het bevat PHP code, het wordt door PHP uitgeoverd... het is dus gewoon PHP. Dat het sterk *LIJKT* op javscript is volstrekt niet relevant.
Quote:
Het gaat om de simpele vraag of er een tool is die embedded PHP in JS goed minimaliseert om snelheid te winnen, niets meer en niets minder.
Nee die zijn er niet, want voor de dertigste keer: je kunt PHP niet embedden in javascript.
Wat jij hebt is een PHP script dat javascript print en het *ENIGE* wat je zou kunnen doen is de *UITVOER* van je script minifyen, en dat is, zoals ook al twintig keer gezegd; zinloos want het kost meer tijd om te minifyen dan het kost om de niet-minified versie te versturen.
*ALS* je iets met minification zou willen doen, dan zou je de javascript versie van deze code moeten maken, met alleen placeholders voor waar PHP zijn variabelen moet plaatsen, dat minifyen en dan de minified code weer terug moeten plakken en de placeholders weer vervangen door de PHP code die de variabelen print.
Maar zoals je ziet: dan moet je dus eerst deze *PHP CODE* veranderen zodat het *JAVSCRIPT* wordt en na het minifien de *JAVASCRIPT* code weer veranderen naar *PHP CODE*.
Jouw hele probleem bestaat puur omdat je niet ijzernheinig blijft vasthouden aan het idee dat je een javscript bestand hebt. Dat heb je niet, punt.
Quote:
Nee die zijn er niet, want voor de dertigste keer: je kunt PHP niet embedden in javascript.
Kijk, de server krijgt een request om een pagina te serveren. Dit is een .php bestand met daarin een JavaScriptje met wat PHP-embeds. De webserver met PHP ziet de PHP-tags staan, en parst alles daarin zodat ze de gewenste output geven welke voor ons een HTML/JS output is. Deze output gaat dus naar de browser van de client toe, en voila.
En dan heb ik het over het toekennen van de JavaScript-variabelen in je HTML-code. Daar kan je dus prima PHP in gebruiken, en dat kan je ook prima dynamisch maken. Die JavaScript variabelen kan je dan weer verwerken in je (geminifiede) JavaScript file die je embedt.
Je kan je JavaScript-file dus lekker statisch houden, en laten cachen door je bezoekers.
@Vincent: Ik zie zelf echt niks over een PHP-script die JavaScript echo'ed. Laat maar zien waar jij PHP ziet die een JavaScript echo'ed?
Dit is zoals ik de terminologie ken, en ik vermoed dat hier ergens een spraakverwarring in zit.
Gewijzigd op 22/10/2016 10:34:13 door - Ariën -
https://www.google.nl/search?q=minify+javascript
Hier vind ik een hoop scripts en tools.
Ja, zas ik zei werken die niet met embedded PHP in JS,
@vincent
Ook ik zie niks over een PHP script dat Javascript echoed.
Quote:
jouw hele probleem is uitsluitend veroorzaakt doort jouw idee dat dit javascript is. Dat is het niet.
het heet *.php, het bevat PHP code, het wordt door PHP uitgeoverd
het heet *.php, het bevat PHP code, het wordt door PHP uitgeoverd
Ongelofelijk, dat je dat niet begrijpt, ik heb de code al gegeven. Het is Javascript met embedded PHP, zoek maar eens op google.
Quote:
Nee die zijn er niet, want voor de dertigste keer: je kunt PHP niet embedden in javascript.
Dat kunt je wel, dat heb ik gedaan en dat werkt,dat zijn feiten, maar het minimaliseren werkt niet.
Daniel van Seggelen op 22/10/2016 10:53:08:
@Arian,
https://www.google.nl/search?q=minify+javascript
Hier vind ik een hoop scripts en tools.
Ja, zas ik zei werken die niet met embedded PHP in JS,
@Arian,
https://www.google.nl/search?q=minify+javascript
Hier vind ik een hoop scripts en tools.
Ja, zas ik zei werken die niet met embedded PHP in JS,
Dat hoeft ook niet, als je de embedded PHP in je HTML-document inlaadt, buiten je javascript-file. Zie ook mijn voorbeeld in dit topic. Met andere woorden: het kan prima! :-)
Gewijzigd op 22/10/2016 10:55:35 door - Ariën -
- Ariën - op 22/10/2016 10:28:19:
@Vincent: Ik zie zelf echt niks over een PHP-script die JavaScript echo'ed. Laat maar zien waar jij PHP ziet die een JavaScript echo'ed?
@Vincent: Ik zie zelf echt niks over een PHP-script die JavaScript echo'ed. Laat maar zien waar jij PHP ziet die een JavaScript echo'ed?
Oh oh! Mag ik? Technisch gezien wordt een willekeurig script met wat embeds omgezet naar een script met echo's. Dat zijn de opcodes die je krijgt. Dus:
is qua opcodes EXACT hetzelfde als
Het probleem dat ontstaat is dat de code die je wilt minifyen anders is dan de code die uiteindelijk gebruikt wordt, en in de huidige opzet is de code inclusief je placeholders gewoon geen geldige javascript, maar WEL geldige PHP code.
Gewijzigd op 22/10/2016 11:43:39 door Ben van Velzen
Dat is eigenlijk wel zo inderdaad, doordat het met een .php door PHP wordt geparsed. Dat gebeurt niet met een .js file.
Quote:
Dit is een .php bestand
En... punt, cut, that's a take, inpakken en klaar.
Het is een PHP script, PHP leest het, PHP verwerkt het, en het PRINT javasacript.
Quote:
Ook ik zie niks over een PHP script dat Javascript echoed.
Wat denk je dan dat PHP doet met de tekst die buiten de PHP tags staat? Komen ze op je scherm? Ja. Komen ze uit PHP? Ja. Worden ze dan geprint? Ja.
Quote:
Dat kunt je wel, dat heb ik gedaan en dat werkt,dat zijn feiten, maar het minimaliseren werkt niet.
Nee, het kan niet, dat heb jij niet gedaan, en het minimaniseren werkt niet omdat je dus *GEEN* javasscript hebt gemakt.
Quote:
Dat is eigenlijk wel zo inderdaad, doordat het met een .php door PHP wordt geparsed. Dat gebeurt niet met een .js file.
Dat roep ik twee dagen... het is een PHP script, het heeft de PHP extentie, het wordt door PHP opgestart... het *IS* PHP. En dus is het logisch dat javascript tools er niet mee kunnen werken en daarom lukt het minifiyen niet.
Conclusie: Minifieen heeft zin als je statische JS-files hebt. Die gaan toch niet door PHP. En de dynamische scripts in je index.php file, kan je heel lastig on-the-fly minifieen. Maar een paar toewijzingen is niet zo heel lastig te minifieen, een kwestie van wat enters en spaties eruit filteren. (Of {strip} in Smarty ;-) )
Gewijzigd op 23/10/2016 10:36:19 door - Ariën -
Ik raak je even kwijt. Waar gaat het over opcache? Ik had het zelf over de browser cache. De conclusie wordt er overigens niet minder geldig door.
Quote:
En dat verhaal over die opcache kwam pas later naar voren, en ind at opzicht kan je zeker gelijk hebben, maar in de praktijk lijkt het namelijk anders.
opCODE, niet opcache, dat zijn twee totaal verschillende dingen. Op het moment dat PHP het script parset maakt hij er gewoon één groot print statement van.
Quote:
Daar zit de verwarring dus.
En ik snap die verwarring dus niet, als je een script hebt met PHP tags er in, met de .php extensie, en het wordt uitgevoerd door PHP, waarom dan volhouden dat het javascript is? Het *genereert* javascript, maar dat is wat anders.
De reden dat ik er zo lang over doorzaag is dat het belangrijk is voor je website (en je carriere in de PHP wereld) dat je begrijpt in welke taal je bezig bent en welke consequenties daar aan hangen. Als je denkt dat je javascript bestanden kunt opslaan als *.php omdat dat "ook werkt", dan maak je je website onnodig traag en zwaar voor de server.
Wat dat betreft is het hetzelfde als gebrekkige kennis van databases, waar men liever kiest om alle records uit een tabel in PPH te laden en ze in PHP te verwerken omdat men dat "overzichtelijker" vindt. En intussen ligt de server bijna plat...
(ps: "je" is hier in het algemeen, niet jou of de TS in het bijzonder)
Quote:
Conclusie: Minifieen heeft zin als je statische JS-files hebt. Die gaan toch niet door PHP.
Minifyen doe je om precies één reden: de minified versie is kleiner dan het origineel. Kleinere bestanden kosten minder bandbreedte en dus minder tijd om te versturen.
- Je kunt javascript printen vanuit PHP.
- De javascript die je print met PHP kun je minifyen, de originele PHP code niet.
- Je kunt een pre-minified versie van de javascript code maken met speciale javascript-vars of strings die als placeholders werken zodat je ze met PHP weer kunt vervangen door de waarde die je nodig hebt.
Maar, minifyen heeft alleen echt nut als je significant ruimte spaart. Als je 0.04 seconde extra werk per pageview moet doen om 20 bytes uit te sparen dan kun je beter niet doen want die 20 bytes kosten maar een paar microseconden om te versturen.
Het hele verhaal van dynamisch javascript is sowieso achterhaald door AJAX. Bouw gewoon een javascript app en laat die de dynamische data laden via een XHR call. Die call haalt dan alleen een handjevol waarden op, die je nog kunt laten cachen ook, zowel serverside als clientside. Dar is een van de redenen waarom systemen zoals AngularJS zo populair zijn, ze halen alle noodzaak voor "dynamische javascript" weg.
In de php file waar javascript gemaakt word exporteer ik in een .js file op deze manier
PHP
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function minify_output($buffer){
$search = array('/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s');
$replace = array('>','<','\\1');
if (preg_match("/\<html/i",$buffer) == 1 && preg_match("/\<\/html\>/i",$buffer) == 1) {
$buffer = preg_replace($search, $replace, $buffer);
}
return $buffer;
}
ob_start('minify_output');
// EMBEDDED PHP IN JS
<?php
if ($_SESSION['anything']=='')
{
?>
jsfuntie_test('test');
<?php
} else {?>
jsfuntie_test('test2');
<?php
}
$myJS = ob_get_clean();
$JSoutput = fopen("/pad/js/output.js", "wr") or die("Unable to open file!");
fwrite($JSoutput, $myJS );
fclose($JSoutput);
[/code]
Nog niet getest, maar denk dat het zou moeten werken.
$search = array('/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s');
$replace = array('>','<','\\1');
if (preg_match("/\<html/i",$buffer) == 1 && preg_match("/\<\/html\>/i",$buffer) == 1) {
$buffer = preg_replace($search, $replace, $buffer);
}
return $buffer;
}
ob_start('minify_output');
// EMBEDDED PHP IN JS
<?php
if ($_SESSION['anything']=='')
{
?>
jsfuntie_test('test');
<?php
} else {?>
jsfuntie_test('test2');
<?php
}
$myJS = ob_get_clean();
$JSoutput = fopen("/pad/js/output.js", "wr") or die("Unable to open file!");
fwrite($JSoutput, $myJS );
fclose($JSoutput);
[/code]
Nog niet getest, maar denk dat het zou moeten werken.
Heb je daardoor ook door dat je letterlijk *bytes* zal winnen hiermee? Zie de opmerking van Vincent hierover. Je maakt je site alleen maar trager hiermee.
EDIT:
Zo te zien is dit overigens voor HTML bedoeld, op JS zal het niets uithalen.
Gewijzigd op 23/10/2016 12:29:32 door Ben van Velzen