Một số câu hỏi thường gặp về WP Super Cache

bởi Nguyễn Đức Anh
WP Super Cache

Plugin WP Super Cache tạo file html tĩnh từ blog WordPress động. Sau khi file html được tạo, máy chủ web sẽ sử dụng file đó thay vì xử lý các đoạn mã PHP (của WordPress) nặng và tốn kém hơn.

Các file html tĩnh sẽ được phục vụ cho đa số người dùng:

  • Những người dùng không đăng nhập.
  • Những người dùng không để lại nhận xét trên blog.
  • Hoặc những người dùng không xem bài đăng được bảo vệ bởi mật khẩu (password protected post).

99% người xem trang web sẽ được phục vụ bởi file html tĩnh. Một file cache có thể được sử dụng hàng ngàn lần. Những người truy cập khác có thể được phục vụ bởi file cache tùy chỉnh được thiết kế riêng dành cho họ. Nếu họ đăng nhập, hoặc để lại bình luận những chi tiết đó sẽ được hiển thị và tạo cache cho chúng.

Plugin cung cấp file cache theo 3 cách (xếp theo thứ hạng tốc độ):

  1. Chuyên gia. Phương thức tăng tốc cao nhất (fastest method) là sử dụng mod_rewrite của Apache (hoặc bất kỳ module nào tương tự mà web server của bạn hỗ trợ) để phân phối các file html tĩnh “siêu tải/supercached”. Nó hoàn toàn bỏ qua PHP và cực nhanh. Nếu máy chủ của bạn bị ảnh hưởng bởi lưu lượng truy cập, phương thức này có khả năng đối phó bằng các truy vấn “nhẹ hơn”. Điều này yêu cầu module mod_rewrite của Apache (nếu bạn sử dụng được liên kết tĩnh tùy chỉnh (permalink) thì có lẽ nó đã được cài) và một số chỉnh sửa ở file .htaccess – nhưng thao tác này cần cẩn thận vì chỉnh sửa file .htaccess có nguy cơ làm trang của bạn không truy cập được nếu bạn sửa không đúng cách.
  2. Đơn giản. File tĩnh do Supercache tạo có thể được phục vụ bởi PHP và đây là cách chúng tôi khuyến khích sử dụng plugin này. Plugin sẽ phục vụ file “siêu tĩnh” nếu nó tồn tại và nó gần nhanh bằng phương thức mod_rewrite. Cấu hình cũng dễ hơn, cũng như file .htaccess không cần phải thay đổi. Bạn vẫn cần permalink tùy chỉnh. Bạn có thể giữ các phần của trang động trong chế độ caching này.
  3. Caching kiểu WP-Cache. Cái này chủ yếu được sử dụng cache trang cho người dùng đã biết, URLs có thông số (parameters) và nguồn cấp. Người dùng đã biết là người dùng đã đăng nhập (logged in users), người ghé thăm để lại bình luận hoặc những người cần phải hiển thị dữ liệu tùy chỉnh dựa vào người dùng. Nó là phương thức cache mềm dẻo nhất và hơi chậm. Cách caching WP-Cache cũng sẽ cache trang cho người dùng không đăng nhập nếu phương thức supercaching bị vô hiệu hóa. Bạn cũng có thể có các phần động cho trang của bạn ở chế độ này. Chế độ này luôn được bật nhưng bạn có thể vô hiệu hóa caching cho người dùng đăng nhập, URLs với thông số, hoặc nguồn cấp dữ liệu theo cách riêng. Thiết lập hằng số “DISABLE_SUPERCACHE” là 1 trong file wp-config.php nếu bạn muốn sử dụng chỉ phương thức WP-Cache.

Nếu bạn không thích chỉnh sửa file PHP thì hãy sử dụng phương thức simple (đơn giản). Nó dễ dàng thiết lập và cũng rất nhanh.

Các thiết lập khuyên dùng

  1. Sử dụng Simple caching.
  2. Nén trang (compress pages).
  3. Không cache trang cho người dùng đăng nhập.
  4. Cache rebuild.
  5. Hỗ trợ CDN.
  6. Mở rộng kiểm tra trang chủ.

Thu gom rác (garbage collection) là hành động dọn sạch file cache đã quá hạn và quá cũ (out of date and stale). Không có giá trị chính xác cho việc đặt thời gian hết hạn nhưng điểm bắt đầu tốt là 1800 giây.

Xem xét việc xóa nội dung của hộp văn bản “Từ chối User Agents” và cho phép máy tìm kiếm cache files cho bạn.

Tải trước (preload) nhiều bài viết nhất bạn có thể thông qua bật chế độ “Preload Mode”. Thu gom các file cache cũ sẽ bị vô hiệu hóa. Nếu bạn không quan tâm đến việc các sidebar ở phần widgets cập nhật thường xuyên hãy thiết lập khoảng thời gian tải trước là 2880 phút (2 ngày) nhờ thế tất cả các viết của bạn sẽ không được cache lại quá thường xuyên. Khi preload được kích hoạt, file cache cho bài viết đang làm mới (refresh) sẽ bị xóa và sau đó được tạo lại. Sau đó trình thu gom rác thu gom tất các file cũ để xóa bỏ các file cache cũ. Thậm chí ngay cả khi chế độ preload được bật để cache file, file cache đó vẫn bị xóa khi bài post được chỉnh sửa hoặc có bình luận.

Preloading

Bạn có thể tạo các file cache cho các bài viết (posts), thư mục và các thẻ tag cho trang của bạn thông qua preloading. Preloading sẽ ghé thăm từng trang trên website để tạo ra các trang cache, giống như bất kỳ người ghé thăm nào vào trang. Do tính chất tự nhiên tuần tự của chức năng này, có thể sẽ mất thời gian để preload hoàn thành nếu website của bạn có nhiều bài post.

Để preload hiệu quả hơn, có thể hữu ích nếu bạn vô hiệu hóa chức năng thu gom rác, nhờ thế mà các file cache cũ hơn không bị xóa. Điều đó được thực hiện bằng cách bật chế độ “Preload Mode” trong phần cài đặt. Tuy nhiên hãy lưu ý rằng, cuối cùng các trang sẽ trở nên quá cũ/quá hạn (out of date), nhưng các cập nhật bằng cách gửi bình luận hoặc chỉnh sửa bài đăng sẽ xóa các phần của cache.

Thu gom rác

Thư mục cache của bạn sẽ đầy lên theo thời gian, cái sẽ lấy không gian trên máy chủ của bạn. Nếu không gian là giới hạn hoặc tốn kém chi phí, hoặc nếu bạn lo lắng rằng các trang cache trên trang của bạn sẽ quá cũ thì thu gom rác phải được thực hiện. Thu gom rác xảy ra thường xuyên và xóa các file cũ trong thư mục cache. Trong phần cài đặt nâng cao (advanced settings) bạn có thể chỉ định:

  1. Cache timeout (thời gian hết hạn của cache). Bao lâu thì file cache được xem xét làm mới lại. Sau thời gian này chúng được xem là quá cũ và có thể bị xóa.
  2. Scheduler (lên lịch). Cài đặt mức độ thường xuyên trình thu gom rác nên được thực hiện.
  3. Notification emails (thông báo qua email). Bạn có thể được thông báo về tiến trình thu gom rác. Không có thiết lập đúng sai cho việc thu gom rác. Nó phụ thuộc vào trang của bạn.

Nếu trang của bạn cập nhật thường xuyên, hoặc hay có bình luận hãy thiết lập timeout là 1800 giây và thiết lập timer là 600 giây.

Nếu trang của bạn ít khi có thay đổi (mostly static) bạn có thể vô hiệu hóa chức năng thu gom rác bằng cách nhập 0 vào phần timeout, hoặc sử dụng giá trị timeout rất lớn.

Thư mục cache, thường là wp-content/cache/ chỉ là nơi chứa các file tạm thời. Đừng bao giờ đưa các file quan trọng hoặc thư mục quan trọng trong thư mục này. Chúng sẽ bị xóa nếu plugin có quyền truy cập ghi vào chúng.

CDN

Mạng phân phối nội dung (Content Delivery Network – CDN) thường là một mạng lưới các máy tính nằm ở khắp nơi trên thế giới sẽ phục vụ nội dung trang web của bạn nhanh hơn bằng cách sử dụng máy chủ ở gần bạn nhất. Các file tĩnh như hình ảnh, JavaScript và CSS có thể được phục vụ thông qua các mạng lưới này để tăng tốc khả năng tải trang của bạn. Bạn cũng có thể tạo một “CDN của người nghèo” bằng cách sử dụng sub domain của tên miền chính để phục vụ các file tĩnh.

OSSDL CDN off-linker đã được tích hợp vào WP Super Cache để cung cấp các hỗ trợ CDN cơ bản. Nó làm việc bằng cách rewriting (viết lại) URL của các file (ngoại trừ file .php) trong wp-content và wp-includes trong máy chủ của bạn vì thế mà chúng trỏ về được hostname khác. Nhiều CDN hỗ trợ “origin pull”. Điều này nghĩa là CDN sẽ tải file tự động từ máy chủ của bạn khi nó nhận được yêu cầu đầu tiên, và sẽ tiếp tục phục vụ nó trong khoảng thời gian được cấu hình trước khi tải lại nó lần nữa từ máy chủ của bạn.

Tinh chỉnh cấu hình này trên tab “CDN” của trang cài đặt plugin. Đây là kỹ thuật nâng cao và yêu cầu hiểu biết cơ bản về cách máy chủ hoặc CDN hoạt động. Hãy đảm bảo là bạn xóa bỏ file cache sau khi bạn tinh chỉnh CDN.

Tùy chỉnh caching

Giờ bạn có khả năng tham gia (hook) vào quá trình caching bằng cách sử dụng hàm add_cacheaction().

Có 3 “hook” có sẵn:

  1. “wp_cache_get_cookies_values” – chỉnh sửa khóa được sử dụng bởi WP Cache.
  2. “add_cacheaction” – chạy trong phase2. Cho phép plugin thêm WordPress hook vào.
  3. “cache_admin_page” – chạy trong trang admin. Sử dụng nó để chỉnh sửa trang đó, có thể bằng cách thêm các tùy chọn cấu hình mới.

Cũng có một bộ lọc WordPress thông thường. Sử dụng bộ lọc “do_createsupercache” để tùy chỉnh các kiểm tra trước khi tạo cache. Bộ lọc cho phép một tham số. Đầu ra của hàm wp_cache_get_cookies_values() của WP-Cache.

Xem plugins/searchengine.php như một ví dụ tôi sử dụng cho plugin của tôi No Advers for Friends.

Sửa các lỗi có thể xảy ra

Nếu có điều gì đấy không hoạt động bình thường khi bạn cài plugin, dưới đây là vài thứ cần kiểm tra:

  1. wp-content có khả năng ghi bởi web server (máy chủ web)?
  2. File wp-content/wp-cache-config.php có tồn tại không? Nếu không, copy file wp-super-cache/wp-cache-config-sample.php thành wp-content/wp-cache-config.php và đảm bảo WPCACHEHOME trỏ đến đúng vị trí.
  3. File wp-content/advanced-cache.php có không? Nếu không, thì bạn phải copy wp-super-cache/advanced-cache.php vào wp-content/. Bạn phải chỉnh sửa file và thay đổi đường dẫn để nó trỏ vào thư mục wp-super-cache.
  4. Nếu trang không được cache một chút nào, loại bỏ wp-content/advanced-cache.php và tạo lại nó, làm theo các hướng dẫn ở trên.
  5. Hãy đảm bảo là dòng bôi đậm dưới đây trong wp-config.php và nó NẰM TRÊN dòng “require_once(ABSPATH.’wp0settings.php’)”: define( ‘WP_CACHE’, true );
  6. Thử Settings->WP Super Cache lần nữa và bật cache.
  7. Nhìn vào wp-content/cache/supercache/. Có các thư mục và các file ở đó không?
  8. Có điều gì trong file php error_log?
  9. Nếu trình duyệt của bạn vẫn yêu cầu bạn lưu file sau khi super cache được cài bạn phải vô hiệu hóa trình nén của Super Cache. Vào Settings->trang WP Super Cache và vô hiệu nó ở đây.
  10. Plugin không hoạt động tốt khi chế độ PHP safe mode được kích hoạt. Nó phải được vô hiệu hóa bởi quản trị viên của bạn.
  11. Nếu trang của bạn được cache rất ngẫu nhiên và đôi khi không được cache, blog của bạn có lẽ được xem đồng thời với cả tiền tố có “www” và không “www” trong URL. Bạn cần phải chọn một và cài đặt plugin Enforce www prefernce nếu bạn sử dụng bản cài đặt WordPress cũ. Phiên bản mới nhất tự nó chuyển hướng (dù gì, bạn vẫn nên chạy phiên bản WordPress mới nhất).
  12. Người dùng server riêng tại Dreamhost phải chỉnh sửa file wp-content/wp-cache-config.php và thiết lập thư mục cache tới “/tmp” nếu họ gặp lỗi về việc tăng sử dụng CPU.
  13. Lỗi khóa têp như “failed to acquire key 0x152b: Permission denied in…/không thể lấy khóa 0x152b: Quyền bị từ chối trong…” hoặc “Page not cached by WP Super Cache. Could not get mutex lock./Trang không được cache bởi WP Super Cache. Không thể khóa mutex.” là dấu hiệu cho thấy bạn có sử dụng khóa tệp/file locking. Chỉnh sửa wp-content/wp-cache-config.php và bỏ ghi chú “$use_flock = true” hoặc thiết lập $sem_id sang một giá trị khác. Bạn cũng có thể vô hiệu hóa khóa tệp từ màn hình Admin như là giải pháp cuối cùng.
  14. Đảm bảo là cache/wp_cache_mutex.lock có khả năng ghi bởi web server nếu sử dụng khóa file thô.
  15. Thư mục cache không thể được đặt trong chia sẻ NFS hoặc Samba hoặc NAS. Nó phải nằm trên một đĩa cục bộ. Khóa tệp và xóa tệp quá hạn không làm việc chính xác trừ khi thư mục cache nằm trên máy cục bộ.
  16. Trình dọn dẹp rác các file cũ không thể làm việc nếu WordPress không tìm thấy wp-cron.php. Nếu hostname của bạn trỏ về 127.0.0.1 nó có thể ngăn không cho trình thu dọn rác làm việc. Kiểm tra access_logs cho mục wp-cron.php. Có phải chúng trả về mã 404 (không tìm thấy file) hoặc 200? Nếu nó là 404 hoặc bạn không thấy wp-cron.php ở bất cứ đâu, WordPress có thể tìm kiếm đoạn mã đó sai vị trí. Bạn phải nói với quản trị viên server để chỉnh sửa điều này hoặc sửa lại trên server Unix và loại bỏ dòng sau. Hostname của bạn phải trỏ vể địa chỉ IP bên ngoài khác với máy chủ trên mạng/Internet sử dụng. Xem thêm bài viết https://yoast.com/wp-cron-issues/ để biết thêm chi tiết. Một dòng kiểu “127.0.0.1 localhost localhost.localdomain” là OK
  17. Nếu các trang cũ được đưa ra cho người truy cập thông qua supercache, bạn có thể bị mất modules Apache (hoặc những cái tương đương với nó nếu bạn không sử dụng Apache). 3 module sau là cần thiết: mod_mime, mod_headers và mod_expires.Hai cái cuối cùng đặc biệt quan trọng để đảm bảo trình duyệt tải phiên bản mới của các trang đang tồn tại trên trang.
  18. Thông báo lỗi, “WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed!/WP Super Cache đã được cài nhưng gặp vấn đề. Đường dẫn đến wp-cache-phase1.php trong wp-content/advanced-cache.php phải được sửa lại!” xuất hiện tại vị trí cuối của tất cả các trang. Mở file wp-content/advanced-cache.php bằng trình soạn thảo bạn hay dùng. Đường dẫn tới wp-cache-phase1.php có chính xác không? FIle này bình thường sẽ nằm trong wp-content/plugins/wp-super-cache/. Nếu nó không chính xác bộ nhớ đệm sẽ không tải được.
  19. Caching không hoạt động. Nhãn thời gian trên blog của tôi tiếp tục thay đổi khi tôi reload (tải lại trang). Kiểm tra đường dẫn trong các quy tắc bạn thiết lâp ở .htaccess có phù hợp với thư mục supercache. Bạn có thể phải hardcode nó. Thử vô hiệu hóa chế độ supercache.
  20. Nếu file cache của supercache được tạo nhưng không được phục vụ, kiểm tra quyền trên tất cả thư mục của bạn ở wp-content/cache/supercache (và từng cache của wp-content và thư mục supercache) và wp-content/cache/.htaccess. Nếu PHP của bạn chạy như một người dùng khác với Apache và quyền hạn là strict/nghiêm ngặt, Apache có thể không đọc được các file cache tạo bởi PHP. Để chỉnh sửa bạn phải thêm các dòng sau vào file wp-config.php của bạn (Và nó nằm trên định nghĩa của WP_CACHE). Sau đó xóa cache của bạn. umask( 0022 );
  21. Nếu bạn nhìn thấy file rác trong trình duyệt sau khi bật nén trong plugin, nén có thể đã được bật sẵn trong web server của bạn. Trong Apache bạn phải vô hiệu hóa mod_deflate, hoặc trong PHP zlib compression có thể đã được bật. Bạn có thể vô hiệu hóa theo ba cách. Nếu bạn có quyền truy cập gốc (root access), hãy chỉnh sửa php.ini và tìm đến cái đặt zlib.output_compression và đảm bảo rằng nó “Off” hoặc thêm dòng sau vào .htaccess: php_flag zlib.output_compression off . Nếu điều đó vẫn không có hiệu quả, thêm dòng sau vào wp-config.php: ini_set(‘zlib.output_compression’, 0);
  22. “Màn hình trắng chết chóc” hoặc một trang trắng khi bạn ghé thăm trang web gần như chắc chắn có nguyên nhân từ lỗi PHP nhưng nó cũng có thể có nguyên nhân bới APC. Vô hiệu hóa tiện ích mở rộng PHP nếu bạn gặp vấn đề và thay thế nó bằng eAccelerator hoặc Xcache.
  23. Sau khi gỡ cài đặt, liên kết tĩnh của bạn có thể bị gãy nếu bạn cũng loại bỏ các quy tắc của mod_rewrite. Tạo lại các quy tắc đó bằng cách vào trang Settings->Permalink và lưu form một lần nữa.
  24. Nếu trang của bạn từ chối tải, hãy đảm bảo rằng wp-config.php được thiết lập chính xác. Bạn có bỏ quên thẻ đóng hoặc mở PHP nào không?
  25. Trang chủ của bạn thì ổn nhưng các bài post và page trả về kết quả 404? Vào phần Settings->permalinks và click “Save” khi bạn đã lựa chọn cấu trúc đường dẫn tĩnh. Bạn có thể cần cập nhật thủ công file .htaccess
  26. Nếu một số ký tự không hiển thị chính xác trên trang web của bạn, máy chủ của bạn có thể không được cấu hình chính xác. Bạn cần nói cho người ghé thăm biết bộ ký tự nào được sử dụng. Vào Setting->Reading và copy giá trị “Mã hóa cho trang và nguồn cấp/Encoding for pages and feeds”. Chỉnh sửa file .htaccess với toàn bộ Supercache của bạn và các quy tắc viết lại cho WordPress và thêm nó lên đầu, thay thế CHARSET giá trị copy. (ví dụ, ‘UTF-8’): AddDefaultCharset CHARSET
  27. Sử dụng Cron View để giúp chẩn đoán các vấn đề về thu dọn rác và tải trước. Sử dụng plugin để đảm bảo công việc được lên lịch và vào thời gian nào. Tìm kiếm các hook wp_cache_gc và wp_cache_full_preload.
  28. Thông báo lỗi “WP Super Cache được cài đặt nhưng bị gãy. WPCACHEHOME phải được thiết lập trong file wp-config.php và trỏ về thư mục của plugin WP Super Cache” xuất hiện ở cuối mỗi trang. Bạn có thể xóa wp-content/advanced-cache.php và tải lại các thiết lập trang hoặc chỉnh sửa wp-config.php và tìm kiếm WPCACHEHOME và đảm bảo nó trỏ về thư mục wp-super-cache. Nó thường là wp-content/plugins/wp-super-cache/ nhưng bạn có thể sẽ cần đường dẫn đầy đủ trỏ về file (vì thế sẽ dễ dàng hơn cho trang setting sửa nó). Nếu nó không chính xác, bộ nhớ đệm sẽ không được tải.
  29. Nếu máy chủ của bạn gặp vấn đề do số lượng semaphores sử dụng bởi plugin thì cái đó có nguyên nhân từ việc người dùng của bạn sử dụng file locking (khóa tệp tin) cái không được khuyến khích (nhưng chỉ cần thiết cho một số nhỏ người dùng). Bạn có thể vô hiêu hóa toàn bộ file locking bằng cách xác định hằng số WPSC_DISABLE_LOCKING, hoặc xác định hằng số WPSC_REMOVE_SEMAPHORE vì thế sem_remove() được gọi sau khi từng trang được cache nhưng dường như gây ra vấn đề cho các yêu cầu xử lý khác giống với semaphore. Tốt nhất là vô hiệu hóa nó.
  30. Thiết lập biến $htaccess_path trong wp-config.php hoặc wp-cache-config.php tới đường dẫn toàn cục của .htaccess nếu plugin tìm file này trong thư mục không chính xác. Điều này có thể xảy ra nếu bạn cài đặt WordPress theo cách không bình thường.
9 các bình luận

9
Khu vực bình luận

avatar
5 Số lượng chủ đề bình luận
4 Số lượng phản hồi cho các chủ đề bình luận
0 Người theo dõi
 
Bình luận được phản hồi nhiều nhất
Chủ đề bình luận sôi nổi nhất
6 Các tác giả bình luận
Nguyễn Đức Anhlê trung kiênTuấnHùng Phannguyen binh Những người bình luận gần đây
mới nhất cũ nhất bình chọn nhiều nhất
Học Luật
Khách
Học Luật

Plugin giúp cải thiện tốc độ website đáng kể tuy nhiên nó làm tính năng đếm số lượt xem bài viết ko hoạt động đc!

nguyen binh
Khách
nguyen binh

Cho mình hỏi chút mình có sử dụng plugin này nhưg kho sửa bài viết ví dụ với tiêu đề abcd v101 thì khi mình post lên fb nó k cập nhật tiêu đề v101 mà vẫn lấy tiêu đề cũ v100 k hiểu vì sao? Mong bạn giúp

Hùng Phan
Khách
Hùng Phan

Blog e đang dùng code hiển thị thời gian đăng giống fb (1 giờ trước, 2 giời trước….) nên dùng tạo cache rất bực vì nó hay bị sai phần đó, có giải pháp nào k a? Hay dùng lại code hiển thị ngày đăng bt nhỉ

Tuấn
Khách
Tuấn

Đã đọc nhiều bài của bạn, có nhận xét là: Đừng viết theo lối hàn lâm nữa mà hãy viết giảm dị hơn nếu có thể.

lê trung kiên
Khách
lê trung kiên

hiện website của mình không thể kích hoạt được, khi kích hoạt thì bị lỗi Error: Configuration file /export/user/e/zvn_8153de/live_9254b4/var/wordpress/wp-content/wp-cache-config.php is missing. Please reload the page. Warning! Could not update /export/user/e/zvn_8153de/live_9254b4/var/wordpress/wp-config.php! WPCACHEHOME must be set in config file. Warning! /export/user/e/zvn_8153de/live_9254b4/var/wordpress/wp-content/advanced-cache.php does not exist or cannot be updated. If it already exists, please delete the file first. Make /export/user/e/zvn_8153de/live_9254b4/var/wordpress/wp-content writable using the chmod command through your ftp or server software. (chmod 777 /export/user/e/zvn_8153de/live_9254b4/var/wordpress/wp-content) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command) Refresh… Đọc thêm »