Kỹ thuật bộ nhớ đêm cho server-side

Một phần của tài liệu Nghiên cứu áp dụng các kỹ thuật phát triển web tiên tiến làm tăng tốc độ tối ưu hiệu năng của ứng dụng web (Trang 45 - 49)

A. Khái niệm về bộ nhớ đệm web

Kỹ thuật bộ nhớ đệm web (Web Caching) chính là việc chuyển bản copy của các tài liệu Web từ Web server đến gần với Web client hơn. Nhìn chung, ngƣời sử dụng Web client sẽ chỉ nhận thấy độ trễ rất thấp khi yêu cầu một URL, phía nhà quản lý mạng sẽ nhận thấy ít lƣu lƣợng hơn và các Web server có số lƣợng các yêu cầu cung cấp dịch vụ thấp hơn. Web client yêu cầu tài liệu từ Web server hoặc trực tiếp hoặc thông qua Web cache server hay proxy. Web cache server có chức nǎng nhƣ Web server khi nhìn từ phía client và có chức nǎng nhƣ client khi nhìn từ phía Web server. Chức nǎng của Web cache server là lƣu trữ các tài liệu Web (có thể là các trang HTML, các hình ảnh hoặc các tệp tin) tại vị trí gần với ngƣời sử dụng để tránh phải chuyển về nhiều lần cùng một tài liệu qua cùng một kết nối và do đó làm giảm thời gian tải về và tạo ra ít tải hơn trên các server đầu xa.

B. Tại sao phải sử dụng bộ nhớ đệm đối với Web

Đơn giản vì nó tiết kiệm đƣợc thời gian cho ngƣời duyệt Web. Việc đọc dữ liệu trên RAM nhanh gấp hàng trăm lần đọc dữ liệu trên ổ cứng trong khi CSDL thƣờng ghi dữ liệu trên ổ cứng. Vì thế hãy sử dụng các công nghệ memory caching để lƣu trữ những dữ liệu thƣờng xuyên đọc lên RAM để tăng tốc quá trình đọc dữ liệu. Có rất nhiều hệ thống memory caching giúp làm việc này nhƣ Memcached, Redis, AppFabric hoặc cache engine của web server.

Có 3 lợi ích chính của Web caching:

 Làm cho trang Web đƣợc load nhanh hơn (giảm thời gian trễ): bởi vì những đáp ứng có sẵn trực tiếp cho các yêu cầu đã đƣợc lƣu trữ, và gần với client đƣợc phục vụ hơn. Bởi vì ỵêu cầu đƣợc thỏa mãn tại cache (gần với client hơn) thay vì từ server chính, nó giảm đƣợc thời gian cho client để lấy và hiển thị đối tƣợng. Nó làm cho các websites dƣờng nhƣ đáp ứng nhanh hơn.

 Giảm băng thông sử dụng: bởi vì một số yêu cầu và đáp ứng cần phải thông qua mạng máy tính. Mỗi đối tƣợng chỉ nhận đƣợc từ server khi có yêu cầu, web caching làm giảm một lƣơng băng thông chiếm dụng bởi client. Việc

35

này giúp tiết kiệm tiền nếu client phải trả tiền cho băng thông, và giữ cho các nhƣ cầu về băng thông hạ xuống và dễ dàng quản lý.

 Giảm số lần truy cập lại trên server gốc

 Thời gian trễ

Thời gian trễ chính là khoảng thời gian mà dữ liệu đƣợc chuyển từ nơi này đến nơi khác. Một nguồn gốc khác của việc trễ mạng chính là ngẽn mạng. Khi các đƣờng kết nối đã đƣợc sử dụng tối đa thì các gói tin sẽ đƣợc xếp hàng trong các Router hay Switch. Khi các gói tin đã đƣợc xếp đầy trong hàng đợi thì nó sẽ loại bỏ tất các các gói tin tiếp theo đến. Với những giao thức tin cậy nhƣ TCP/IP việc mất gói tin thì tƣơng đƣơng với việc truyền lại gói tin. Vì vậy việc truyền lại sẽ gây mất rất nhiều thời gian, làm giảm tốc độ của mạng trong việc truyền tin.

 Băng thông

Băng thông chính là dung lƣợng đƣờng truyền mà dữ liệu đi qua. Với mỗi yêu cầu mà dữ liệu là kết quả trong web caching thì nó sẽ tiết kiệm đƣợc băng thông. Khi đó sẽ không tốn băng thông để dữ liệu truyền từ máy server gốc mà nó lấy luôn dữ liệu trong cache. Web cache thì giảm băng thông sử dụng bởi các luồng dữ liệu HTTP. Điều này có thể nói là web cache làm tăng hiệu quả của băng thông. Nếu một mạng hỗ trơ 100 ngƣời dùng khi không có web cache thì sẽ hỗ trợ đƣợc 150 ngƣời dùng khi có web cache.

 Tải máy chủ

Cũng giống nhƣ việc giảm băng thông thì việc giảm thời gian khi sử dụng máy chủ gốc. Các máy chủ thì đáp ứng liên tục các yêu cầu từ phía các máy chạm. Một máy chủ rỗi thì chắc chắn sẽ nhanh hơn so với máy chủ bận. Vì vậy chiến lƣợc ở đây là sử dụng bộ nhớ đệm web để giảm thời gian tải dữ liệu của các hệ thống máy chủ.

C. Phân loại bộ nhớ đệm Web

Nội dung của một trang Web thì có thể đƣợc lƣu trữ ở nhiều vị trí khác nhau dọc theo các đƣờng dẫn giữa các client và các server gốc. Đầu tiên các trình duyệt cũng tự mình xây dựng hệ thống cache trong nó. Ngƣời ta gọi nó là Browser caches. Tiếp theo là caching proxy (proxy cache) kết hợp tất cả các yêu cầu của các client thành một nhóm. Cuối cùng một hệ thống đại diện có thể đƣợc đặt tại đầu các server gốc để lƣu trữ những đáp ứng thƣờng xuyên.

36

 Browser Caches (Client Cache) các trình duyệt thì cũng xây dựng trong nó hệ thống cache. Mỗi khi ta nhấn nút Back trên trình duyệt thì nó đọc lại trang vừa xem trong cache của nó. Đối tƣợng cache có thể là các file tạm thời trên đĩa hoặc có thể là trong bộ nhớ trong.

Trong khi trình duyêt Web Netscape yêu cầu bạn phải xác định xem không gian đĩa dành cho caching là bao nhiêu. Microsoft thì yêu cầu bạn cần phải điều khiển kích thƣớc cache dành cho đĩa của bạn là bao nhiêu. Thông thƣờng thì ta thƣờng sử dụng 10-100 MB không gian đĩa cứng dành cho Browser cache.

 Caching Proxy (Server Cache). Loại cache này nằm trên một server trong mạng lƣới gồm nhiều client và nhiều server. Thông thƣờng, nó không nằm trong cùng một hệ thống chạy một loại Web client hay một HTTP server nào đó. Không giống nhƣ Browser caches, dịch vụ cache này có thể phục vụ nhiều user cùng một lúc. Khi có nhiều ngƣời cùng tới thăm một website tại một thời điểm thì caching proxie thƣờng đƣợc sử dụng hơn Browser cache.

Caching proxie thì cần thiết đối với rất nhiều tổ chức nhƣ các nhà cung cấp dịch vụ Web, các tổng công ty lớn, các trƣờng đại học, viện nghiên cứu. Caching Proxies thì thƣờng đƣợc đặt ở các gateway (nhƣ router) hay nói một cách khác thì nó thƣờng đƣợc sử dụng để có thể phục vụ một số lƣợng ngƣời lớn nhất.

37

Hình 2.14 Proxy cache [13]

D. Cách sử dụng cache server-side

 Outpug caching Khi dùng Output caching toàn bộ nội dung của trang sẽ đƣợc lƣu lại. Với những trang có lƣợng truy cập lớn, caching sẽ thƣờng xuyên lƣu lại (đến) từng phút một. Khi một trang đƣợc lƣu lại bằng Output cache, Những yêu cầu gửi tới trang đó sẽ đƣợc thực hiện ở trang output mà không cần phải thi hành code hay tạo lại nữa. Chúng ta có thể sử dụng cache output theo tham số url, theo điều khiển.

Response.Cache.SetExpires(DateTime.Now.AddMinutes(1)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true);

 Fragment caching. Đôi khi website chỉ muốn cache lại một phần của trang khi đó ta sẽ cache một usercontrol trong trang chẳng hạn cần cache phần hiển thị dữ liệu thời tiết trong vòng 5 phút. Dƣới đây là đoạn mã cache một usercontrol

38

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="CahceUserCtr.ascx.cs" (adsbygoogle = window.adsbygoogle || []).push({});

Inherits="CahceUseControl" %>

<%@ OutputCache Duration="5" VaryByParam="None" %>

<p><asp:Label ID="lblWeather" runat="server" EnableViewState="false"

ForeColor="GradientActiveCaption" /></p>

 Data cache. Với các thành phần dữ liệu không đòi hỏi cập nhật thƣờng xuyên thì nên dùng data caching để lƣu chúng lại trong bộ nhớ giảm chi phí truy vấn xuống cơ sở dữ liệu sau đây là đoạn mã cài đặt cách sử dụng data cache. public List<TinTuc> DanhSachTinTuc()

{

var danhsachtintuc = Cache.Get(cacheKey) as List<TinTuc>; if (danhsachtintuc != null)

{

return danhsachtintuc; }

var obj = TintucService.GetAll().OrderByDescending(t => t.NgayXuatBan).ToList(); Cache.Insert(cacheKey, obj, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero); return obj;

}

Một phần của tài liệu Nghiên cứu áp dụng các kỹ thuật phát triển web tiên tiến làm tăng tốc độ tối ưu hiệu năng của ứng dụng web (Trang 45 - 49)