Backend Note
Một vài note khi làm việc với BE
Webhook
Tổng quan
Webhook thực chất chỉ là một request từ remote server (hook server) đến web của bạn
- Hook Header lưu ở global $_SERVER
- Payload thì
@file_get_contents('php://input')
Cách tạo webhook từ Postman
- Coi Postman chính là server hook và bắn request đến website của bạn dưới dạng một Request. Body dạng JSON là dữ liệu của webhook. Ví dụ body truyền JSON như sau với stripe
1 | { |
Endpoint: Route xử lý request từ hook
Nhờ vậy, sự kiện source.changeable được kích hoạt từ Postman mà bạn không phải thay đổi source trên stripe, đỡ 1 bước để test nhanh hơn
Lấy dữ liệu
- Cách lấy dữ liệu đúng nhất
- Header: Global $_SERVER
- Body (Payload):
@file_get_contents('php://input')
1 | # https://stripe.com/docs/webhooks |
- Cách lấy này để xác thực chữ ký (nếu muốn) một cách chính xác. Vì tôi đã từng gặp phải trường hợp kiểm tra chữ ký, ký lên cả body nhưng dùng các hàm của Laravel (kết quả như nhau) nhưng chữ ký sai
- Với Laravel, bạn có thể lấy dữ liệu từ biến $request vì như đã nói ở trên, bản chất webhook cũng là gửi một request đến server bên thứ 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18use Illuminate\Http\Request;
class WebhookController extends Controller
{
/**
* Process webhook event.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$header = $request->header('signature');
$payload = $request->all();
//
}
}
Phân tích các thông số video và các file media
getID3() is a PHP script that extracts useful information from MP3s & other multimedia file formats: https://www.getid3.org/
- Sử dụng getID3
1 | composer require james-heinrich/getid3 |
- Sử dụng
1 |
|
SEO
Tổng hợp
- Yêu cầu Icon, logo, img có title, alt theo keyword
- Nén dung lượng Icon, logo, img:
- Logo: nhỏ hơn 10 KB
- Icon: (from disk cache).
- Img: nhỏ hơn 100 KB. Ảnh cần phù hợp với viewport, tránh sử dụng css để căn chỉnh width, height
- Bổ sung Favicon.
- Sắp xếp menu dựa trên chuyên mục cần SEO.
- Link được tự động lấy theo title bài viết (slug)
- Các link không SEO, link trống, link out để dưới dạng nofollow
- Xây dựng title, description meta duy nhất cho mỗi page
- Xây dựng H1, H2, H3, H4.
- Bổ sung Schema (sitemap.xml): https://github.com/spatie/laravel-sitemap
- Xây dựng Title, Description, Img khi share lên mạng xã hội
- Tự động lấy tiêu đề làm alt cho ảnh khi người viết không thêm. Nén ảnh về dưới 100 KB. (sử dụng định dạng webp có thể tham khảo link:
https://dieuhau.com/su-dung-file-webp-trong-wordpress/
Others
Tốc độ: Tốc độ tải trang trên Desktop đạt trên 90 điểm, Mobile trên 40 điểm.
Thông báo: Xuất hiện bảng “Đăng ký nhận thông báo” sau khi vào trang được 30s (xem ảnh của trang facebook bên cạnh)
Tìm kiếm: Thêm xếp hạng, đánh giá sao, gợi ý vào kết quả tìm kiếm (xem ảnh kinh nghiệm du lịch đà lạt)
Thêm Sitelinks và link mở rộng vào kết quả tìm kiếmCác thông số Core Web Vital (LCP, FID, CLC)
Backend Note