W3 Total Cache, CDN và các tệp chủ đề [đã đóng]


10

Tôi đã cập nhật tệp style.css trong quá trình cài đặt WordPress của tôi gần đây. Thay đổi có hiệu lực: khi đăng nhập với tư cách quản trị viên (blog của tôi được đặt để quản trị viên không bao giờ được cung cấp phiên bản được lưu trong bộ nhớ cache của trang web, nhưng là một người sống trực tiếp trên mạng), tôi có thể thấy họ.

Nhưng blog của tôi đang được phục vụ thông qua CDN (sử dụng W3 Total Cache). Thông qua CDN, các thay đổi không hiệu quả: CDN không phục vụ các tệp đã sửa đổi từ chủ đề của tôi. Mặc dù tôi đã tải chúng lên sau khi sửa đổi (Bảng điều khiển> Hiệu suất> CDN> Tải lên tệp chủ đề.

CDN của tôi chạy trên AmazonCloud Front. Và Minify bị vô hiệu hóa trên W3 Total Cache.

Tệp chủ đề đang được phục vụ thông qua CDN của tôi là phiên bản nén: style.css.gzip

Tôi có nên thanh lọc các đối tượng của mình từ CDN của mình hay đợi thêm một chút (đã hơn một tuần). Và vâng, tôi làm trống bộ nhớ cache của trình duyệt tôi đang sử dụng để xem các thay đổi đang có hiệu lực. Hoặc có điều gì khác tôi đang thiếu?

Cảm ơn,

P

Câu trả lời:


10

Bạn cần phải

  1. Phiên bản các tệp của bạn (bằng cách gọi nó style.css?ver=xxx.xxx) và đảm bảo rằng bản phân phối CloudFront của bạn đã bật "Chuỗi truy vấn chuyển tiếp". Đây là tùy chọn tốt hơn, vì nó có nghĩa là tất cả những gì bạn cần làm là tăng số trong chuỗi truy vấn và CloudFront sẽ tự động tìm nạp tệp này.

  2. Vô hiệu hóa thủ công các tệp của bạn thông qua Bảng điều khiển AWS (có tab không hợp lệ khi bạn chỉnh sửa bản phân phối của mình)

Để bật 'Chuỗi truy vấn chuyển tiếp', hãy làm như sau:

  • Chỉnh sửa bản phân phối Cloudfront của bạn bằng cách đánh dấu vào hộp kiểm bên trái 'i' và sau đó nhấp vào nút "cài đặt phân phối" trên thanh công cụ
  • Chuyển đến tab Hành vi
  • Chọn dòng và nhấp vào 'Chỉnh sửa'
  • Thay đổi "chuỗi truy vấn chuyển tiếp" thành Có
  • Nhấp vào "Có, Chỉnh sửa"

1
@kaiser yup, datetime là phiên bản là cách tốt nhất để phiên bản tệp. Tuy nhiên, bạn vẫn cần đảm bảo rằng tùy chọn "Chuỗi truy vấn chuyển tiếp" được bật trong CloudFront, nếu không, số phiên bản được tạo thủ công độc đáo của bạn sẽ bị bỏ qua: P
anu

Cảm ơn bạn. Tôi có hai câu hỏi cho bạn vì tôi không quen với thủ tục này. 1) Tên của các tệp tin được phiên bản trên hệ thống của Cameron phải tuân theo chính xác ví dụ bạn đã đưa ra (với dấu chấm hỏi, các dấu bằng và thay thế tất cả các dòng x x bằng các số tôi chọn) phải không? 2) Trên bảng điều khiển AWS của tôi cho CLoudFront, tôi nhấp vào trong Tôi, tôi ở bên trái của bảng ngay bên cạnh bản phân phối tôi đã tạo cho blog của mình. Điều này cho phép tôi truy cập các cài đặt của bản phân phối. Ở đó tôi có thể thấy "Chuỗi truy vấn chuyển tiếp" là Sai false. Tôi có nên sao chép hành vi này của người
Viking

1
1. có hoặc bạn có thể sử dụng ý nghĩa tốt của @ kaiser nhưng câu trả lời chưa đầy đủ để đặt tên cho tệp của bạn. 2. Tôi sẽ cập nhật câu trả lời với quy trình
anu

8

Có một "mẹo" khá đơn giản để ngăn chặn bộ đệm, khi nội dung tệp thay đổi: Thêm số phiên bản, được đặt thành ngày / giờ mới nhất bạn đã thay đổi tệp của mình.

add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
    wp_enqueue_style( 
        'style-main',
        get_stylesheet_directory_uri().'/style.css',
        array(),
        filemtime( get_stylesheet_directory().'/style.css' )
    );
}

Điều này sẽ nối ?ver=0123456789vào liên kết tham chiếu style.css của bạn trong tiêu đề của bạn. Số phiên bản sẽ chỉ thay đổi, khi nội dung tệp được sửa đổi. Vì vậy, bạn có một giải pháp hoạt động hoàn hảo với a) bộ đệm phía máy chủ b) bộ đệm của trình duyệt và tự động làm mới.


Ok, đó là một tùy chọn thực sự thú vị: nó loại bỏ nhu cầu phiên bản thủ công style.csstệp của tôi sau mỗi lần sửa đổi (điều mà tôi sẽ quên làm ở điểm này hay điểm khác). Bây giờ, nếu tôi có thể hỏi, tôi phải thêm mã này vào đâu? Tôi sẽ đoán functions.phptập tin của tôi ?
Parneix

Tôi không biết, nơi bạn cần thêm mã này. Chỉ cần tìm kiếm thông qua các tệp chủ đề của bạn và thay thế cuộc gọi "bình thường" đến tệp style.css. Tôi sẽ đăng một bản cập nhật ngắn, vì vậy bạn có thể đặt nó trong tệp tin.php. Điều này vẫn có nghĩa là bạn cần xóa cuộc gọi ban đầu). Và btw: Đây chỉ là một bổ sung cho câu trả lời @anu. (Upvotes vẫn được đánh giá cao :)
kaiser

1
Không vấn đề gì! Tôi hoàn toàn hiểu rằng vị trí của mã này có thể thay đổi tùy thuộc vào chủ đề được sử dụng. Tôi sẽ quản lý để thêm nó vào functions.phptập tin của tôi . Tôi vẫn nghĩ rằng đó là một bổ sung tốt cho giải pháp được cung cấp bởi @anu. Cảm ơn rất nhiều vì sự giúp đỡ.
Parneix

-1

một câu trả lời ngắn ...

  1. Xóa tất cả các tệp chủ đề của bạn và tải lại chúng. đôi khi hành động xóa sẽ xóa CDN

  2. Có, bạn có thể thử Purge - nhưng Xóa và tải lên lại thường nhanh hơn.

  3. Ngoài ra, hãy kiểm tra các cài đặt trong W3TC và trong Amazon. Cache mặc định cho trong W3TC thường là 365 ngày. đó là 31536000 giây :)

Trong Amazon .. sẽ có một cài đặt cho các điểm cuối để truy vấn lại CDN. tôi biết trong Rackspace mặc định là 24 giờ.


1
Có nhiều cách tốt hơn để làm điều đó hơn thế này, xem câu trả lời của tôi
anu

Xóa tất cả các tập tin chủ đề của bạn và tải lại chúng. đôi khi hành động xóa sẽ xóa CDN, ý bạn là để tôi xóa chúng trên trang web của mình, phải không? Sau đó tải lên lại chúng trong cài đặt WordPress của tôi. Và sau đó tôi đoán có phải các tệp chủ đề Tải lên của Tải lại một lần nữa thông qua bảng điều khiển W3 Total Cache không?
Parneix

1
@Parneix nghiêm túc, đừng xóa mọi thứ trừ khi bạn phải làm vậy. Nó gần như chắc chắn sẽ không hoạt động trừ khi bạn cũng xóa mọi thứ khỏi CDN. Có nhiều cách tốt hơn để vô hiệu hóa tệp CSS cũ của bạn
anu

1
Vâng cảm ơn! Tôi đã lưu ý tốt về đề nghị của bạn. Tôi thực sự đánh giá cao tất cả sự giúp đỡ tôi đang ở đây. Tôi không chỉ giải quyết vấn đề của mình mà còn học cả những thứ mới.
Parneix
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.