Chuyển đến nội dung chính

Sửa giới hạn dung lượng tải ảnh WordPress

Hầu hết các lời khuyên đều bảo bạn chỉnh sửa php.ini. Trên hosting chia sẻ, bạn thường không thể làm vậy. Nén ảnh trước hoạt động hiệu quả ở mọi nơi.

Hãy nén hình ảnh xuống dưới mức giới hạn thay vì tăng giới hạn đó lên, bởi vì một tệp nhỏ hơn sẽ giải quyết cả lỗi tải lên lẫn vấn đề tốc độ trang chỉ trong một bước. WordPress kế thừa giới hạn này từ PHP, thường là 2 MB hoặc 8 MB tùy thuộc vào nhà cung cấp dịch vụ lưu trữ (host), và trên hosting được quản lý (managed) hoặc hosting chia sẻ (shared), bạn thường không thể thay đổi nó.

Hầu như mọi bài viết về chủ đề này đều hướng dẫn bạn chỉnh sửa php.ini, .htaccess hoặc wp-config.php. Những hướng dẫn đó giả định rằng bạn có quyền truy cập máy chủ mà hầu hết chủ sở hữu trang web không có, và ngay cả khi có quyền truy cập, bạn cũng nên tự hỏi liệu việc nâng giới hạn có phải là bước đi đúng đắn.

Giới hạn này bắt nguồn từ đâu

Giới hạn được thiết lập bởi 3 giá trị PHP, và giá trị nhỏ nhất trong số 3 giá trị đó sẽ quyết định. WordPress hiển thị con số kết quả bên dưới hộp tải lên, đó là lý do tại sao con số này thường khác với những gì nhà cung cấp dịch vụ lưu trữ quảng cáo.

  • upload_max_filesize kiểm soát dung lượng tệp đơn lẻ lớn nhất mà PHP chấp nhận.
  • post_max_size kiểm soát tổng dung lượng của một lượt gửi, vì vậy nó phải lớn hơn dung lượng tệp.
  • memory_limit kiểm soát lượng bộ nhớ mà thao tác thay đổi kích thước có thể sử dụng trong khi tạo ảnh thu nhỏ (thumbnail).
  • max_execution_time cũng có thể gây ra lỗi, vì một hình ảnh lớn có thể bị hết thời gian chờ trước khi quá trình xử lý hoàn tất.

Giá trị thứ ba gây ra những lỗi khó hiểu nhất. Một tệp tải lên thành công vẫn có thể bị lỗi trong khi WordPress tạo các kích thước ảnh thu nhỏ, tạo ra một hình ảnh bị hỏng trong thư viện phương tiện thay vì thông báo lỗi tải lên.

Tại sao nén ảnh lại tốt hơn nâng giới hạn

Một bức ảnh 6 MB trên một trang web là một vấn đề lớn, bất kể máy chủ có chấp nhận nó hay không. Việc nâng giới hạn chỉ loại bỏ thông báo lỗi và để lại dung lượng nặng nề đó trên trang web.

WordPress tạo ra nhiều kích thước ảnh thu nhỏ từ mỗi lần tải lên, vì vậy một tệp gốc nặng sẽ nhân bản thành nhiều tệp phái sinh nặng và tiêu tốn dung lượng lưu trữ trên toàn bộ thư viện phương tiện. Nén ảnh xuống còn vài trăm kilobyte trước khi tải lên sẽ khắc phục được lỗi, giảm kích thước các ảnh thu nhỏ được tạo ra, rút ngắn thời gian sao lưu và hoàn toàn không cần quyền truy cập máy chủ.

Cách đưa dung lượng ảnh xuống dưới mức giới hạn

Để tải lên thành công mà không cần chạm vào cài đặt máy chủ, hãy làm theo 5 bước sau.

  1. Đọc giới hạn hiển thị bên dưới hộp tải lên của WordPress, đây là con số thực tế từ nhà cung cấp dịch vụ lưu trữ của bạn.
  2. Thay đổi kích thước hình ảnh về chiều rộng hiển thị thực tế của nó, nhân đôi cho màn hình có mật độ điểm ảnh cao, vì một bức ảnh 4000 pixel nằm trong một cột hiển thị 800 pixel sẽ lãng phí hầu hết dữ liệu của nó.
  3. Chuyển đổi sang định dạng WebP đối với ảnh chụp và đồ họa chỉ xuất hiện trên trang web.
  4. Nén về mức dung lượng mục tiêu từ 200 KB đến 400 KB, mức này phù hợp với hầu hết mọi hình ảnh trong bài viết.
  5. Tải lên, sau đó kiểm tra xem hình ảnh có hiển thị chính xác ở chiều rộng đầy đủ trên cả máy tính và thiết bị di động hay không.

Thực hiện theo thứ tự đó thường tạo ra một tệp nhỏ hơn 90 phần trăm so với ảnh gốc từ máy ảnh, mà không có thay đổi rõ rệt nào trên màn hình. Lỗi tải lên biến mất như một kết quả phụ tự nhiên chứ không cần phải cố gắng xử lý trực tiếp.

Kích thước khuyến nghị cho nội dung WordPress

Hãy khớp chiều rộng hình ảnh với không gian rộng nhất mà nó sẽ chiếm trong giao diện (theme) của bạn, sau đó nhân đôi kích thước đó cho màn hình có mật độ điểm ảnh cao. Hầu hết các khu vực nội dung đều hẹp hơn nhiều so với những gì chủ sở hữu trang web nghĩ.

Mục đích sử dụng ảnhChiều rộng hiển thịChiều rộng tải lênDung lượng mục tiêu
Ảnh trong bài viết700 px1400 px150 KB đến 250 KB
Ảnh nổi bật rộng đầy màn hình1200 px2400 px300 KB to 500 KB
Banner Hero hoặc banner đầu trang1920 px1920 px300 KB to 400 KB
Ảnh thu nhỏ hoặc ảnh dạng thẻ400 px800 px50 KB to 100 KB
Ảnh tác giả hoặc ảnh hồ sơ150 px300 pxDưới 30 KB

Khi nào nâng giới hạn là câu trả lời đúng

Hãy nâng giới hạn khi bạn thực sự cần tải lên các tệp lớn bắt buộc phải giữ nguyên dung lượng, chẳng hạn như ảnh có độ phân giải in ấn, video hoặc các gói giao diện (theme). Những trường hợp đó là có thật nhưng không phải là trường hợp phổ biến.

Một nhiếp ảnh gia cung cấp các bộ sưu tập ảnh độ phân giải cao, một cửa hàng nhập một plugin lớn, hoặc một trang web lưu trữ các tài liệu PDF cho phép tải xuống đều cần không gian lưu trữ lớn. Một blogger có bức ảnh chụp kỳ nghỉ chỉ hiển thị rộng 700 pixel thì không cần. Hãy tự hỏi tệp đó dùng để làm gì trước khi thay đổi cài đặt máy chủ, vì câu trả lời thường sẽ dẫn bạn quay lại với việc nén ảnh.

Cách nâng giới hạn nếu bạn bắt buộc phải làm

Hãy yêu cầu nhà cung cấp dịch vụ lưu trữ trước, vì hầu hết các nhà cung cấp dịch vụ quản lý (managed host) sẽ thay đổi giá trị này theo yêu cầu chỉ trong vài phút. Gửi yêu cầu hỗ trợ sẽ giải quyết vấn đề này nhanh hơn việc tự chỉnh sửa các tệp cấu hình trên bất kỳ gói hosting nào hạn chế quyền truy cập tệp.

  • Các nhà cung cấp Managed WordPress hosting thường hiển thị cài đặt này trong bảng điều khiển hoặc điều chỉnh theo yêu cầu.
  • cPanel hosting thường bao gồm MultiPHP INI Editor, nơi bạn có thể thiết lập trực tiếp 3 giá trị này.
  • Máy chủ riêng ảo (VPS) cho phép chỉnh sửa php.ini, sau đó dịch vụ PHP phải được khởi động lại.
  • Chỉnh sửa tệp .htaccess hoạt động trên một số cấu hình Apache và có thể gây ra lỗi máy chủ trên các cấu hình khác, vì vậy hãy luôn sao lưu trước.
  • Các plugin tuyên bố nâng giới hạn không thể vượt quá những gì máy chủ cho phép, bất kể mô tả của chúng nói gì.

Lỗi HTTP không phải do dung lượng

Lỗi HTTP chung trong quá trình tải lên thường có nghĩa là bộ nhớ hoặc thời gian thực thi đã hết trong khi WordPress tạo ảnh thu nhỏ, chứ không phải tệp bị từ chối vì dung lượng quá lớn. Sự khác biệt này rất quan trọng vì việc nén hình ảnh sẽ khắc phục được cả hai nguyên nhân.

Kích thước pixel lớn chứ không phải dung lượng tệp lớn mới là nguyên nhân chính tiêu tốn bộ nhớ, vì máy chủ phải giữ mọi pixel trong bộ nhớ trong khi thay đổi kích thước. Một hình ảnh 6000 x 4000 pixel cần nhiều bộ nhớ hơn nhiều so với những gì dung lượng tệp của nó gợi ý. Giảm kích thước pixel trước khi tải lên sẽ loại bỏ được lỗi này ngay cả khi tệp đã nằm dưới mức giới hạn dung lượng.

Các kích thước ảnh thu nhỏ mà WordPress tạo ra

WordPress tạo ra ít nhất 4 bản sao bổ sung cho mỗi lần tải lên, và các giao diện cũng như plugin thường thêm vào vài bản sao nữa. Một bức ảnh đơn lẻ có thể biến thành 8 hoặc 10 tệp trên đĩa cứng mà chủ sở hữu trang web không hề hay biết.

Các kích thước mặc định là ảnh thu nhỏ (thumbnail) ở mức 150 pixel vuông, trung bình (medium) ở mức 300 pixel, trung bình lớn (medium large) ở mức 768 pixel và lớn (large) ở mức 1024 pixel, bên cạnh phiên bản được thu nhỏ mà WordPress tạo ra cho các tệp tải lên cực lớn. Các trình dựng trang (page builder) và plugin thư viện ảnh cũng đăng ký thêm các kích thước riêng của chúng. Tải lên một ảnh gốc nhỏ hơn đồng nghĩa với việc mọi tệp phái sinh cũng nhỏ hơn, đó là lý do tại sao việc nén ảnh trước khi tải lên mang lại hiệu quả cộng dồn trên toàn bộ thư viện.

Hỗ trợ WebP trong WordPress

WordPress đã chấp nhận tải lên định dạng WebP kể từ phiên bản 5.8, và mọi trình duyệt hiện tại đều hiển thị định dạng này. Tải trực tiếp ảnh WebP giúp bạn tránh được việc phải cài đặt các plugin chuyển đổi vốn được nhiều trang web sử dụng cho cùng mục đích.

Có hai lưu ý nhỏ. Một số giao diện cũ và trình dựng trang giả định định dạng là JPG hoặc PNG và có thể không tạo ảnh thu nhỏ WebP một cách chính xác, vì vậy hãy kiểm tra bằng một tệp tải lên thử nghiệm trước khi chuyển đổi toàn bộ thư viện. Hình ảnh dành cho khách truy cập tải xuống, chẳng hạn như bộ tài liệu báo chí hoặc hướng dẫn in ấn, nên giữ nguyên định dạng JPG, vì WebP vẫn còn bất tiện khi sử dụng bên ngoài trình duyệt.

Kiểm tra dung lượng hình ảnh trên một trang đang hoạt động

Mở công cụ dành cho nhà phát triển bằng phím F12, chuyển sang tab Network, lọc theo images và tải lại trang. Bảng điều khiển sẽ liệt kê mọi hình ảnh cùng với dung lượng truyền tải thực tế của nó, được sắp xếp từ lớn nhất đến nhỏ nhất.

Chế độ xem đó trả lời câu hỏi một cách trực tiếp thay vì đoán mò. Hãy tìm bất kỳ hình ảnh đơn lẻ nào trên 500 KB và bất kỳ trang nào có tổng dung lượng hình ảnh lớn hơn 2 MB. Tệp lớn nhất hầu như luôn là tệp đáng để khắc phục đầu tiên, và nó thường là ảnh đầu trang hoặc bức ảnh đầu tiên trong một bài viết. Khắc phục 2 hoặc 3 hình ảnh thường sẽ loại bỏ được hầu hết dung lượng thừa trên một trang.

Khắc phục thư viện phương tiện đã quá nặng

Hãy nén thư viện hiện tại thay vì chỉ nén các tệp tải lên mới, bởi vì các bài viết cũ chiếm hầu hết dung lượng trên một trang web đã hoạt động lâu năm. Một blog hoạt động được 5 năm có thể chứa hàng nghìn hình ảnh chưa được nén.

Tải xuống thư mục uploads, xử lý nó dưới dạng một loạt (batch) duy nhất, và thay thế các tệp cũ nhưng vẫn giữ nguyên tên tệp để các bài viết hiện tại tiếp tục hoạt động bình thường. Việc tạo lại ảnh thu nhỏ sau đó sẽ xây dựng lại các kích thước phái sinh từ các ảnh gốc nhỏ hơn. Hãy sao lưu trước khi thay thế bất kỳ thứ gì, vì đây là một trong số ít tác vụ hình ảnh ghi đè trực tiếp lên các tệp hiện có.

Xử lý toàn bộ thư mục tải lên

Thả thư mục vào dưới dạng tệp lưu trữ ZIP và mọi hình ảnh được hỗ trợ bên trong sẽ được giải nén, thay đổi kích thước và nén chỉ trong một lượt. Có thể xử lý tối đa 500 tệp mỗi loạt, giúp giải quyết hầu hết các trang web vừa và nhỏ trong vài lượt chạy.

Mọi thứ diễn ra ngay bên trong trình duyệt trên bộ vi xử lý của riêng bạn, vì vậy các trang web của khách hàng, bản nháp chưa xuất bản và thư viện riêng tư không bao giờ được gửi lên máy chủ. Điều này rất quan trọng đối với các đơn vị thiết kế web làm việc theo hợp đồng, nơi việc tải thư viện phương tiện của khách hàng lên một dịch vụ nén không xác định sẽ vi phạm thỏa thuận ngay cả khi không có sự cố nào xảy ra.

Quay lại blog