Entfernen Sie? Ver = aus wp_register_script

8

Ich bekomme Nörgelei beim Google-Geschwindigkeitstest in Bezug auf die Querringe in meinen Skripten. Also versuche ich, sie zu entfernen, indem ich false als Argument für diesen Parameter übergebe. Es scheint jedoch keine Wirkung zu haben:

wp_register_script('myscript', get_bloginfo('template_directory').'/scripts.myversionnumber.js',false,false,true);
wp_enqueue_script('myscript');

PS: Der Teil "myversionnumber" des js-Dateinamens ist mein Mittel zur Steuerung des Cache / der Versionierung und nicht der? Ver = -Ansatz, der anscheinend einige Proxyserver auslöst (laut Google Pagespeed-Test):

Entfernen von Abfragezeichenfolgen aus statischen Ressourcen Durch Aktivieren des öffentlichen Caching in den HTTP-Headern für statische Ressourcen kann der Browser Ressourcen von einem nahe gelegenen Proxyserver und nicht von einem Remote-Ursprungsserver herunterladen. Erfahren Sie mehr

Vorschläge für diese Seite

Ressourcen mit einem "?" in der URL werden von einigen Proxy-Caching-Servern nicht zwischengespeichert. Entfernen Sie die Abfragezeichenfolge und codieren Sie die Parameter in die URL für die folgenden Ressourcen:

Scott B.
quelle
Interessante Frage, wusste nie, dass Abfragezeichenfolgen die Seitengeschwindigkeit erhöhen würden. Obwohl ich keine Lösung habe, möchte ich einen Kommentar zum Setzen des Parameters auf "false" abgeben: Afaik, Sie geben entweder eine Versionsnummer ein oder es wird standardmäßig die aktuelle WordPress-Version verwendet.
Johannes Pille
Ich dachte, dass das Skript sogar mit einer Versionsnummer zwischengespeichert werden würde - und dass das Ändern der Versionsnummer den Cache absichtlich "brechen" würde, so dass das neue und nicht das alte Skript geladen würde ...
Stephen Harris
@ Stephen, das ist genau die Idee. Anscheinend werden einige Proxy-Cache-Server Ressourcen-URLs jedoch nicht mit Querystring-Parametern zwischenspeichern. Deshalb entscheide ich mich stattdessen dafür, die Parameter im Dateinamen zu codieren. Gleicher Effekt, weniger Gepäck.
Scott B
Hallo Scott B. Ich stehe vor dem gleichen Problem. Nachdem ich einen Test unter gtmetrix ausgeführt habe, werden Fehler für die Abfrage angezeigt. Hat die von @SickHippie bereitgestellte Lösung für Sie funktioniert? Ist es sicher, es zu benutzen?
kat_indo

Antworten:

9

Ich denke, Sie müssen NULL als 4. Parameter übergeben.

wp_register_script(
    'myscript',
    get_bloginfo('template_directory').'/scripts.myversionnumber.js',
    false,
    NULL,
    true);
wp_enqueue_script('myscript');
SickHippie
quelle
3

Sie können nullals Versionswert an wp_register_scriptoder übergeben, wp_enqueue_scriptund die Abfragezeichenfolge sollte gelöscht werden.

<?php
wp_enqueue_script(
   'myscript',
   '/path/to/script.js',
   array(),
   null
);
chrisguitarguy
quelle
3

Vorwort

Ich habe das ganz anders gelöst als SickHippie und chrisguitarguy und ich denke, es ist nicht so, wie es gelöst werden soll, aber es funktioniert wirklich gut für mich.

Der Code...

Ich habe diesen Codeausschnitt am Ende der functions.phpDatei meines Themas eingefügt:

function remove_cssjs_querystring( $src ) {
  if( strpos( $src, '?rev=' ) ) // copy/paste this line and the next one to take away what you want from the end of your css/js
    $src = remove_query_arg( 'rev', $src );
  if( strpos( $src, 'ver=' ) )
    $src = remove_query_arg( 'ver', $src );
  return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_querystring', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_querystring', 10, 2 );

Woher kam die Idee ...

Ich habe bei Google danach gesucht und diesen Artikel gefunden , aber ich hatte immer wieder ein Problem mit css / js: Zu diesem Zeitpunkt hatte mein Code (hier und da) am Ende noch so etwas wie .../some-stylesheet.css?rev=...und ich dachte darüber nach, das Code-Snippet a zu erweitern ein bisschen, um alles aufzunehmen, was danach hätte sein können .css.

Vcoppolecchia
quelle