Xóa? Ver = khỏi wp_register_script


8

Tôi đang gặp khó khăn khi kiểm tra tốc độ google liên quan đến các truy vấn trong tập lệnh của tôi. Vì vậy, tôi đang cố gắng loại bỏ chúng bằng cách chuyển sai thành đối số cho tham số đó. Tuy nhiên, nó dường như không có tác dụng:

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

PS: phần "myversionnumber" của tên tệp js là phương tiện của tôi để kiểm soát bộ đệm / phiên bản thay vì cách tiếp cận? Ver = có vẻ làm hỏng một số máy chủ proxy (theo thử nghiệm trang của Google):

Xóa chuỗi truy vấn khỏi tài nguyên tĩnh Kích hoạt bộ đệm ẩn công khai trong tiêu đề HTTP cho tài nguyên tĩnh cho phép trình duyệt tải xuống tài nguyên từ máy chủ proxy gần đó thay vì từ máy chủ gốc từ xa. Tìm hiểu thêm

Gợi ý cho trang này

Tài nguyên có dấu "?" trong URL không được lưu trữ bởi một số máy chủ bộ đệm proxy. Xóa chuỗi truy vấn và mã hóa các tham số vào URL cho các tài nguyên sau:


Câu hỏi thú vị, không bao giờ biết rằng chuỗi truy vấn sẽ tăng tốc độ trang. Mặc dù tôi không có giải pháp, hãy bình luận về việc đặt tham số thành "false": Afaik, bạn nhập số phiên bản hoặc mặc định là phiên bản wordpress hiện tại.
Julian Pille

Tôi nghĩ rằng tập lệnh sẽ được lưu vào bộ đệm, ngay cả với số phiên bản - và việc thay đổi số phiên bản sẽ 'phá vỡ' bộ đệm, cố ý để tập lệnh mới, thay vì cũ, được tải ....
Stephen Harris

@Stephen, đó là ý tưởng chính xác. Tuy nhiên, rõ ràng một số máy chủ bộ đệm proxy sẽ không lưu URL tài nguyên với các tham số chuỗi truy vấn. Đó là lý do tại sao tôi chọn mã hóa các thông số trong tên tệp thay thế. Hiệu quả tương tự, ít hành lý.
Scott B

Xin chào Scott B. Tôi đang đối mặt với cùng một vấn đề. Sau khi tôi chạy thử nghiệm trên gtmetrix, tôi gặp lỗi cho truy vấn. Giải pháp được cung cấp bởi @SickHippie có hiệu quả với bạn không? Có an toàn để sử dụng nó?
kat_indo

Câu trả lời:


9

Tôi nghĩ bạn phải vượt qua NULL làm tham số thứ 4.

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

3

Bạn có thể chuyển nulldưới dạng giá trị phiên bản sang wp_register_scripthoặc wp_enqueue_scriptnó sẽ thả chuỗi truy vấn.

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

3

Lời tựa

Tôi đã giải quyết vấn đề này rất khác với SickHippiechrisguitarguy và tôi đoán đó không phải là cách giải quyết, nhưng nó thực sự tốt cho tôi.

Mật mã...

Tôi đặt đoạn mã này vào cuối functions.phptệp của chủ đề của mình :

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

Ý tưởng đến từ đâu ...

Tôi đã nới lỏng nó trên Google và tôi đã tìm thấy bài viết này , nhưng tôi vẫn gặp vấn đề với css / js: tại thời điểm này, mã của tôi vẫn còn (ở đây và ở đó) ở cuối một cái gì đó giống như .../some-stylesheet.css?rev=...và tôi nghĩ về việc mở rộng đoạn mã một chút để bao gồm bất cứ điều gì có thể có sau .css.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.