Trên một dự án mới với nhiều lưu lượng truy cập, chúng tôi đang suy nghĩ về cách cấu trúc ứng dụng Symfony2 của chúng tôi để tận dụng bộ nhớ cache và sẵn sàng tích cực hơn trong tương lai. Tôi rất muốn biết ý kiến của bạn.Làm thế nào để cấu trúc một ứng dụng Symfony2 với ESI?
Giả sử người dùng yêu cầu trang một danh sách địa điểm. Trang này có:
- list
- common data (title, author, description)
- user data (the user likes the list + other data)
- first 20 places
- common data (title, photo of each place)
- user data (the rates of the user for those places)
HTML có thể giống như:
<html>...
<body>
<header>
...
<!-- Embed the top user menu -->
<esi:include src="http://example.com/profile/menu" />
...
</header>
<content>
...
common data of the list
...
<!-- Embed the common data of the first 20 places, the same for everyone -->
<esi:include src="http://example.com/lists/17/places" />
...
<!-- Embed the user data of the list (used in JS) -->
<esi:include src="http://example.com/lists/17/user" />
...
<!-- Embed the user data of the list of places (used in JS) -->
<esi:include src="http://example.com/lists/17/places/user" />
...
</content>
</body>
</html>
HTML sẽ được lưu trữ trên các cửa ngõ (Symfony hoặc Varnish). Danh sách các địa điểm sẽ được lưu trữ hầu hết thời gian trên cổng. Các yêu cầu dữ liệu người dùng sẽ là những yêu cầu được gọi và không được lưu trữ (không phải lúc đầu ít nhất).
Câu hỏi:
- Làm thế nào để bạn cảm thấy về cấu trúc này?
- Nếu người dùng ẩn danh, tôi có thể tránh thực hiện bao gồm esi cho dữ liệu người dùng không? Ngoài ra nếu tôi có một cookie cho người dùng anon? Làm sao?
- Trình bao gồm thực đơn người dùng có hợp lý không?
- Hoặc chúng ta nên quên đi ESI và luôn đi qua bộ điều khiển (lưu vào bộ nhớ đệm hiển thị dữ liệu chung chẳng hạn)?
- Chúng ta có nên di chuyển 2 yêu cầu ESI yêu cầu dữ liệu người dùng là cuộc gọi AJAX, thay vì đợi trên máy chủ không?
- Đây có phải là cách tiếp cận tốt để mở rộng quy mô nếu chúng ta cần thực hiện nhanh không? Điều gì sẽ là tốt nhất?
cảm ơn rất nhiều!
cảm ơn rất nhiều, Chúng tôi đang yêu cầu dữ liệu người dùng trong ajax, thay vì trong ESI. Vì vậy, tôi đồng ý với bạn. Hãy chờ xem việc này sẽ đi đến đâu. Phần quan trọng và thú vị sẽ là tránh sử dụng PURGE. Đó là mục tiêu để có thể mở rộng quy mô. – fesja
Chia sẻ cách hoạt động sau khi thử –