Nén ảnh gốc trên WordPress với Jetpack WebP CDN Replacer

Đây có thể coi là phần cuối của seri Optimize WordPress Images, tổng thể mình thấy bài viết đó khá ổn, đầy đủ các bước, thứ duy nhất còn thiếu là bước nén lại ảnh gốc khi upload lên

Ngẫm tới ngẫm lui vẫn thấy thuần tuý liên quan tới tối ưu ảnh Jetpack vẫn là vô đối, bất kể định dạng gì, chất lượng ảnh của Jetpack vẫn là hàng đầu, quan trọng nhất là họ miễn phí nữa, nên sử dụng nó để tạo ra Jetpack WebP CDN Replacer

Do bước cuối cùng còn thiếu là nén lại ảnh gốc (FULL), plugin này giải quyết duy nhất vấn đề đó, công dụng của nó có thể viết trong 1 dòng 😀

Khi upload ảnh lên WordPress (trong bài viết hoặc Media), Jetpack WebP CDN Replacer sẽ download phiên bản WebP của Jetpack xuống, chép đè lên ảnh ảnh cũ sau đó cập nhập lại meta dữ liệu bức ảnh

Cách làm này mang hơi hướng tiểu xảo khá nhiều, đôi phần có thể gọi là lạm dụng, vì Jetpack CDN không hướng tới cách hoạt động như thế

Jetpack WebP CDN Replacer

Plugin hoạt động qua WP-Cron nên cấu hình sử dụng Linux’s cronjob, tắt WP-Cron mặc định đi để đạt hiệu quả tối ưu nhất

 define('DISABLE_WP_CRON', true);

Cài đặt

  • Download tại đây hoặc ở đây, cài đặt như 1 plugin thông thường là được (link Github)

Cài đặt dạng plugin, gặp lỗi gì chỉ việc vào thư mục /wp-content/plugins xóa đi, hạn chế và dễ xử lý lỗi hơn

Phương thức hoạt động

Mình khá thích nguyên tắc “cài xong quên”, không cần chỉnh gì, nên cố gắng vận hành theo nguyên tắc này, đảm bảo tính khả dụng, chỉ dùng các hàm có sẵn WordPress mặc định: wp_remote_get, wp_update_attachment_metadata, wp_generate_attachment_metadata

Để không ảnh hưởng tới trải nghiệm sử dụng, mỗi khi upload phải chờ chạy đủ các bước thì hơi mất thời gian, phần này khoán hết cho WP-Cron chạy sau

  • Tạo 1 Cron Events (jetpack_webp_cdn_replacer_process) ngay lập tức sau khi upload ảnh lên (còn chuyện bao lâu cron thực sự mới chạy thì tùy thuộc thời gian WordPress xử lý, nếu cấu hình theo bài Linux’s cronjob thường sau khoảng 1 phút là cron sẽ chạy)
  • Công đoạn này bao gồm download ảnh WebP, chép đè lên ảnh ảnh cũ sau đó cập nhập lại meta dữ liệu
  • Trong trường hợp bạn upload 100 hay 1000 tấm ảnh cùng 1 thời điểm, tối đa xử lý 20 tấm ảnh cùng 1 lúc, thử nghiệm thấy khi chạy không ăn CPU là mấy nên vẫn đang duy trì con số này
  • Kiểm tra log tại wp-content/jetpack-webp-cdn-replacer

Bước nặng nhất của toàn bộ quá trình mình nghĩ là phần tạo lại meta cho bức ảnh, nó ghi thông tin vào database, mà thấy xử lý 20 tấm ảnh cùng lúc khá thoải mái, thậm chí nó còn nhẹ hơn so với cách WordPress mặc định tự tạo nhiều thumbnail từ 1 tấm ảnh gốc

Các lỗi có thể xảy ra

Mọi tấm ảnh dù đang là .png hay .jpg, thực tế nó đều là WebP, nên nếu ai dùng 1 trình duyệt đời quá cũ, tới mức không hỗ trợ WebP thì sẽ không thấy ảnh 😀 khoản này thì mình cũng kệ, vì không nghĩ ai vào thèng bibica.net mà dùng trình duyệt bản cũ tới mức đấy được, phần vì thực tế mình vẫn chạy các link ảnh thông qua Jetpack, ảnh sẽ tự được điều chỉnh theo trình duyệt phù hợp

Lú nhất là khi chạy qua môi trường WP-Cron trên WordPress, khá giống vấn đề chạy cron ở môi trường Docker, vài hàm kiểu wp_generate_attachment_metadata nó không chịu chạy :]]

Về vấn đề logic mình cũng cố xử lý, đảm bảo tất cả các file ảnh không bị sót, dù upload 1 lần 1 ảnh hay 1 lần 100-1000 ảnh, thử nghiệm sơ bộ thì ở phiên bản v1.2 đang chạy khá ổn, mình có thử upload 100 ảnh, sau đó xóa đi, upload lại 100 ảnh, đều thấy xử lý chính xác

Vấn đề lỗi liên quan tới hệ thống từ Jetpack thì chịu, không test được, vì nó trâu bò kinh hoàng, mình dùng chắc cũng 5-7 năm nay, chưa bao giờ thấy sập hay lỗi

Không quá chắc tất cả tình huống lỗi phát sinh ở nhiều cấu hình khác nhau, bạn nào dùng, thấy lỗi gì thì cứ comment bên dưới, mình sẽ cố xử lý nếu có thể

Nén ảnh gốc trên WordPress với Jetpack WebP CDN Replacer

Ảnh trên không liên quan tới bài viết, up thử coi nó nó tự giảm dung lượng hay không thôi 😛


Related Posts

Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.

• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.

✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!