Chúng tôi chạy một trang nội dung có khối lượng tương đối cao. Giống như hầu hết các trang nội dung, phần lớn mỗi trang là tương đối tĩnh. Các bài viết hiếm khi thay đổi, làm cho chúng trở thành ứng cử viên tốt cho một số dạng bộ nhớ đệm tĩnh/cạnh. Tuy nhiên, có hai vấn đề lớn. Các phần tử trang phụ (nav, các danh sách nội dung gần đây, vv) thay đổi khá thường xuyên, nhanh chóng làm mất hiệu lực các trang được lưu trong bộ nhớ cache "đầy đủ". Cũng khá phổ biến khi chúng tôi bao gồm nhiều bit động hơn trong một trang, như thông tin cụ thể của người dùng, v.v.Xử lý bài đăng của các yêu cầu HTTP được ủy quyền ngược? (giống như ESI của Akamai)
Sẽ rất gọn gàng để có bộ cân bằng tải/proxy ngược sau nội dung được xử lý và cho phép chúng tôi xử lý proxy/cạnh. Yêu cầu ban đầu cho chương trình phụ trợ sẽ trả về một mẫu thô, sau đó phần mềm proxy có thể xử lý mẫu đó để hoàn thành nó. Đánh dấu có thể trông giống như sau:
<html>
<body>
<div id="content">
Lorem ipsum whackem smackem.
<%
dynamic "http://related.content.service/this/story"
%>
</div>
<div id="sidebar">
<%
dynamic do |request|
url = "http://my.user.service/user-widget.html"
if request.cookies.contains?("user_token")
url = "http://my.user.service/" + request.cookies["user_token"] + "/user-widget.html"
end
error_text = "User service not available"
{ :url => url, :timeout => 500, :error => error_text }
end
%>
</div>
</body>
</html>
Những gì bạn thấy trong ví dụ này là một chút Ruby xác định tệp được bao gồm dựa trên giá trị cookie, sau đó trả về giá trị băm bằng URL để kéo , thời gian chờ và một số văn bản mặc định để hiển thị trong trường hợp có lỗi. Về lý thuyết, tất cả các bao gồm có thể được yêu cầu không đồng bộ là tốt.
Hiểu biết của tôi là Amazon thực hiện điều gì đó như thế này. Các thành phần trang khác nhau được tạo ra bởi các dịch vụ phụ trợ, với giới hạn thời gian chờ nghiêm ngặt để đảm bảo tốc độ trang tổng thể. Tôi đã hy vọng dịch vụ CDN của họ sẽ bao gồm một cái gì đó như thế này, nhưng nó không phải là!
Có thông số W3 cho Edge Side Includes (ESI) gần như là những gì tôi muốn. Có rất ít hỗ trợ cho nó ra khỏi đó, tuy nhiên. Nó có sẵn thông qua Akamai, có một số phần mềm Oracle thực hiện nó, và bộ nhớ cache Varnish nguồn mở có một triển khai rất cơ bản. Nó cũng là một định dạng XML thực sự xấu xí.
Vì vậy, câu hỏi đặt ra là: điều gì sẽ giúp tôi làm những gì tôi muốn? Có ai khác làm việc theo cách này không?
Bạn có thể mở rộng câu trả lời này không? Nó không có vẻ như nó mang lại cho tôi nhiều những gì tôi muốn, nhưng có thể tôi đang thiếu một cái gì đó. – MrKurt
Ah, điều đó hữu ích hơn một chút. Nó sẽ không thực sự giúp tôi có điều kiện bao gồm những thứ, mặc dù, mà làm cho nó ít hữu ích cho các loại kịch bản tôi quan tâm. – MrKurt
hãy nhớ rằng 'những thứ' mà SSI có thể chèn vào toàn bộ trang có thể được tạo động bởi bất kỳ máy chủ phụ trợ. – Javier