VLOS:Extensions/PurgeCache

Từ VLOS
Bước tới: chuyển hướng, tìm kiếm

Lâu lâu không code. Sử dụng biến $dir mà quên không gán giá trị, làm mất cả buổi tối tìm lỗi để fix. :D

Vấn đề[sửa]

Do VLOS sử dụng file cache html cho các trang, nhằm giảm gánh nặng cho máy chủ và tăng tốc độ truy cập với khách vô danh. Điều này dẫn đến 2 tình huống mà hệ thống Mediawiki hiện tại đang bỏ sót?

Tick.svg Tình huống 1: Một số trang XYZ có liên kết đến trang ABC và trang ABC chưa được tạo thì các liên kết tới trang ABC trên các trang XYZ sẽ có màu đỏ. Vấn đề là khi trang ABC được tạo thì các liên kết kia vẫn có màu đỏ khi khách vô danh ghé thăm các trang XYZ. Nguyên nhân là do Mediawiki không update các file cache của các trang XYZ khi trang ABC được tạo.

Tick.svg Tình huống 2: Khi trang ABC được cập nhật nội dung (edit) thì Mediawiki cũng không update file cache của nó nên nếu khách vô danh đọc trang ABC thì sẽ không nhận được bản mới nhất.

Làm gì[sửa]

Hai tình huống trên là lí do cho ext này ra đời. Hơn thế nữa, ext này còn xử lý thêm các tình huống khác nữa.

Tick.svg Tình huống 3: Khi trang ABC bị xóa (delete) thì cũng cập nhật file cache cho các trang XYZ

Tick.svg Tình huống 4: Khi trang ABC được khôi phục (undelete) thì cũng cập nhật file cache cho các trang XYZ.

Tick.svg Tình huống 5: Khi trang ABC được tạo thì cập nhật file cache cho trang VLOS:Trang Chính (mainpage), nhằm để khi người dùng truy cập trang chủ thì luôn nhận được danh sách các trang mới nhất.

Tick.svg Tình huống 6: Khi cập nhật 1 trang thuộc không gian Bản mẫu (Tiêu bản) thì cập clear cache cho các trang có nhúng bản mẫu này.

Phát triển[sửa]

  • Tôi đánh giá đây là một ext không thể thiếu với mediawiki nên tuơng lai mediawiki sẽ bổ sung nó vào core.
  • Hiện tại việc clear file cache diễn ra tức thì sau khi lưu trang. Điều này sẽ làm tăng thời gian xử lý sau khi submit lưu trang nên tuơng lai có thể dụng Job để giảm thời gian submit này.
  • Việc clear file cache sẽ khiến khách vô danh đầu tiên đọc trang XYZ sẽ hơi chậm so với các trang đã được cache khác. Nên tuơng lai có thể sẽ tạo luôn file cache XYZ luôn. Nhưng điều này có thể gây tốn tài nguyên mà không có giá trị, vì tạo ra file cache mà có thể không có khách vô danh nào đọc.
  • Việc update file cache, hiện tại Mediawiki thực hiện bằng cách xóa file cache XYZ và khi khách vô danh đầu tiên truy cập thì mới tạo lại file cache. Điều này có nghĩa là rebuild lại toàn file html. Tương lai sẽ chỉ rebuild lại các thành phần của trang chứ không full. Điều này có thể làm các ext trong tương lai sẽ có modul cache riêng.
  • Đã có trang XYZ, giờ tạo/sửa trang ABC link đến trang XYZ thì có cần clear file cache cho trang XYZ không? Nếu không clear thì mục Liên kết đến đây tại trang XYZ sẽ không xuất hiện trang ABC.
  • Khi import trang ABC thì cũng cần clear file cache cho XYZ
  • Tick.svg Thêm tab Purge xóa cache ở mỗi trang, dành cho bảo quản viên