Hapus? Ver = dari wp_register_script

8

Saya mendapatkan omelan di tes kecepatan google tentang querystrings di skrip saya. Jadi, saya mencoba untuk menghapusnya dengan memberikan false sebagai argumen untuk parameter itu. Namun, tampaknya tidak berpengaruh:

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

PS: bagian "myversionnumber" dari nama file js adalah cara saya mengendalikan cache / versi daripada pendekatan? Ver = yang tampaknya membuat beberapa server proxy tersandung (menurut tes kecepatan halaman Google):

Hapus string kueri dari sumber daya statis Mengaktifkan caching publik di header HTTP untuk sumber daya statis memungkinkan browser untuk mengunduh sumber daya dari server proxy terdekat daripada dari server asal jarak jauh. Belajarlah lagi

Saran untuk halaman ini

Sumber daya dengan tanda "?" di URL tidak di-cache oleh beberapa server cache proxy. Hapus string kueri dan enkode parameter ke URL untuk sumber daya berikut:

Scott B
sumber
Pertanyaan menarik, tidak pernah tahu bahwa string kueri akan mempercepat kecepatan halaman. Meskipun saya tidak punya solusi, tolong komentari pengaturan parameter menjadi "false": Afaik, Anda memasukkan nomor versi, atau default ke versi wordpress saat ini.
Johannes Pille
Saya berpikir bahwa skrip akan di-cache, bahkan dengan nomor versi - dan bahwa mengubah nomor versi akan 'memecah' cache, sengaja sehingga skrip yang baru, bukan yang lama, akan dimuat ....
Stephen Harris
@Stephen, itulah idenya sebenarnya. Namun, tampaknya beberapa server cache proksi tidak akan men-cache URL sumber daya dengan parer query. Itu sebabnya saya memilih untuk menyandikan params di nama file saja. Efek yang sama, lebih sedikit bagasi.
Scott B
Halo Scott B. Saya menghadapi masalah yang sama. Setelah saya menjalankan tes di gtmetrix saya mendapatkan kesalahan untuk kueri. Apakah solusi yang disediakan oleh @SickHippie bekerja untuk Anda? Apakah aman untuk menggunakannya?
kat_indo

Jawaban:

9

Saya pikir Anda harus melewati NULL sebagai parameter ke-4.

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

Anda bisa meneruskan nullsebagai nilai versi ke wp_register_scriptatau wp_enqueue_scriptdan itu akan menjatuhkan string kueri.

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

Kata pengantar

Saya memecahkan ini sangat berbeda dari SickHippie dan chrisguitarguy dan saya kira itu bukan cara yang seharusnya diselesaikan, tetapi ini bekerja sangat baik untuk saya.

Kode...

Saya menempatkan potongan kode ini di akhir functions.phpfile tema saya :

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 );

Dari mana ide itu berasal ...

Saya sedang mencari-cari di Google dan saya menemukan artikel ini , tapi saya terus mengalami masalah dengan css / js: pada titik ini kode saya masih memiliki (di sana-sini) pada akhirnya sesuatu seperti .../some-stylesheet.css?rev=...dan saya berpikir untuk memperluas potongan kode sedikit untuk memasukkan apa pun yang bisa setelah .css.

vcoppolecchia
sumber