Thứ tư, 01/04/2015 | 00:00 GMT+7

Khái niệm cơ bản về bộ nhớ đệm trên web: Thuật ngữ, Tiêu đề HTTP và Chiến lược lưu vào bộ đệm

Bộ nhớ đệm nội dung thông minh là một trong những cách hiệu quả nhất để cải thiện trải nghiệm cho khách truy cập trang web . Bộ nhớ đệm, hoặc tạm thời lưu trữ nội dung từ các yêu cầu trước đó, là một phần của chiến lược phân phối nội dung cốt lõi được triển khai trong giao thức HTTP. Các thành phần trong suốt đường dẫn phân phối có thể lưu tất cả các mục vào bộ nhớ cache để tăng tốc các yêu cầu tiếp theo, tuân theo các policy bộ nhớ đệm được khai báo cho nội dung.

Trong hướng dẫn này, ta sẽ thảo luận một số khái niệm cơ bản về bộ nhớ đệm nội dung web. Phần này chủ yếu sẽ đề cập đến cách chọn policy bộ nhớ đệm đảm bảo rằng bộ nhớ đệm trên internet có thể xử lý chính xác nội dung của bạn. Ta sẽ nói về những lợi ích mà bộ nhớ đệm mang lại, các tác dụng phụ cần lưu ý và các chiến lược khác nhau cần sử dụng để cung cấp hỗn hợp hiệu suất và tính linh hoạt tốt nhất.

Bộ nhớ đệm là gì?

Bộ nhớ đệm là thuật ngữ để lưu trữ các phản hồi có thể sử dụng lại để thực hiện các yêu cầu tiếp theo nhanh hơn. Có nhiều loại bộ nhớ đệm khác nhau có sẵn, mỗi loại có đặc điểm riêng. Cache ứng dụng và bộ nhớ đệm đều phổ biến vì khả năng tăng tốc độ phản hồi nhất định.

Bộ nhớ đệm web, trọng tâm của hướng dẫn này, là một loại bộ nhớ đệm khác. Bộ nhớ đệm web là một tính năng thiết kế cốt lõi của giao thức HTTP nhằm giảm thiểu lưu lượng mạng trong khi cải thiện khả năng đáp ứng nhận thức của toàn bộ hệ thống. Bộ nhớ đệm được tìm thấy ở mọi cấp độ trong hành trình của nội dung từ server root đến trình duyệt.

Bộ nhớ đệm web hoạt động bằng cách lưu vào bộ nhớ đệm các phản hồi HTTP cho các yêu cầu theo các luật nhất định. Các yêu cầu tiếp theo cho nội dung được lưu trong bộ nhớ cache sau đó có thể được thực hiện từ một bộ nhớ cache gần user hơn thay vì gửi yêu cầu trở lại web server .

Những lợi ích

Bộ nhớ đệm hiệu quả hỗ trợ cả người tiêu dùng nội dung và nhà cung cấp nội dung. Một số lợi ích mà bộ nhớ đệm mang lại cho việc phân phối nội dung là:

  • Giảm chi phí mạng : Nội dung có thể được lưu vào bộ nhớ cache tại các điểm khác nhau trong đường dẫn mạng giữa người tiêu dùng nội dung và nguồn root nội dung. Khi nội dung được lưu vào bộ nhớ đệm gần hơn với người tiêu dùng, các yêu cầu sẽ không gây ra nhiều hoạt động mạng bổ sung ngoài bộ nhớ cache.
  • Cải thiện khả năng phản hồi : Bộ nhớ đệm cho phép truy xuất nội dung nhanh hơn vì không cần thiết phải sử dụng toàn bộ mạng. Các bộ nhớ cache được duy trì gần với user , như bộ nhớ cache của trình duyệt, có thể giúp cho việc truy xuất này gần như tức thời.
  • Tăng hiệu suất trên cùng một phần cứng : Đối với server nơi bắt nguồn nội dung, có thể tăng hiệu suất hơn từ cùng một phần cứng bằng cách cho phép bộ nhớ đệm tích cực. Chủ sở hữu nội dung có thể tận dụng các server mạnh mẽ dọc theo đường dẫn phân phối để thực hiện các tải nội dung nhất định.
  • Tính khả dụng của nội dung khi mạng bị gián đoạn : Với một số policy nhất định, bộ nhớ đệm được dùng để cung cấp nội dung cho user cuối ngay cả khi nội dung đó có thể không khả dụng trong một khoảng thời gian ngắn từ server root .

Thuật ngữ

Khi xử lý bộ nhớ đệm, có một số thuật ngữ mà bạn có thể gặp phải mà có thể không quen thuộc. Dưới đây là một số cái phổ biến hơn:

  • Server root : Server root là vị trí ban đầu của nội dung.Nếu bạn đang đóng role là administrator web server , đây là máy mà bạn kiểm soát. Nó chịu trách nhiệm cung cấp bất kỳ nội dung nào không thể được truy xuất từ bộ nhớ cache dọc theo đường yêu cầu và cài đặt policy bộ nhớ đệm cho tất cả nội dung.
  • Tỷ lệ truy cập bộ nhớ cache : Hiệu quả của bộ nhớ cache được đo bằng tỷ lệ truy cập bộ nhớ cache hoặc tỷ lệ truy cập. Đây là tỷ lệ giữa các yêu cầu có thể được truy xuất từ bộ nhớ cache trên tổng số yêu cầu được thực hiện. Tỷ lệ truy cập bộ nhớ cache cao nghĩa là một tỷ lệ phần trăm nội dung cao có thể được truy xuất từ bộ nhớ cache. Đây thường là kết quả mong muốn đối với hầu hết các administrator .
  • Độ mới : Độ mới là một thuật ngữ được sử dụng để mô tả liệu một mục trong bộ nhớ cache có còn được coi là một thành phần để phân phối cho khách hàng hay không. Nội dung trong bộ nhớ đệm sẽ chỉ được sử dụng để phản hồi nếu nó nằm trong khung thời gian làm mới được chỉ định bởi policy bộ nhớ đệm.
  • Nội dung cũ : Các mục trong cache ẩn hết hạn theo cài đặt làm mới cache trong policy bộ nhớ đệm. Nội dung đã hết hạn là "cũ". Nói chung, nội dung đã hết hạn không thể được sử dụng để đáp ứng yêu cầu của khách hàng. Server root phải được liên hệ lại để lấy nội dung mới hoặc ít nhất xác minh nội dung được lưu trong bộ nhớ cache vẫn chính xác.
  • Xác thực : Các mục cũ trong bộ nhớ cache có thể được xác thực để làm mới thời gian hết hạn của chúng. Việc xác thực bao gồm việc kiểm tra với server root để xem liệu nội dung được lưu trong bộ nhớ cache có còn đại diện cho version mới nhất của mặt hàng hay không.
  • Vô hiệu : Vô hiệu là quá trình xóa nội dung khỏi bộ nhớ cache trước ngày hết hạn được chỉ định. Điều này là cần thiết nếu mục đã được thay đổi trên server root và có một mục đã lỗi thời trong bộ nhớ cache sẽ gây ra sự cố nghiêm trọng cho client .

Có rất nhiều thuật ngữ bộ nhớ đệm khác, nhưng những thuật ngữ ở trên sẽ giúp bạn bắt đầu.

Những gì có thể được lưu vào bộ nhớ cache?

Một số nội dung cho phép dễ dàng lưu vào bộ nhớ đệm hơn những nội dung khác. Một số nội dung rất thân thiện với bộ nhớ cache cho hầu hết các trang web là:

  • Biểu trưng và hình ảnh thương hiệu
  • Hình ảnh không xoay nói chung (ví dụ: biểu tượng chuyển )
  • Tờ kiểu
  • Các file Javascript chung
  • Nội dung có thể download
  • Tệp phương tiện

Những thứ này có xu hướng thay đổi không thường xuyên, vì vậy chúng có thể được hưởng lợi từ việc được lưu vào bộ nhớ cache trong thời gian dài hơn.

Một số mục mà bạn phải cẩn thận trong bộ nhớ đệm là:

  • Trang HTML
  • Xoay hình ảnh
  • Javascript và CSS được sửa đổi thường xuyên
  • Nội dung được yêu cầu với cookie xác thực

Một số mục hầu như không bao giờ được lưu vào bộ nhớ đệm là:

  • Nội dung liên quan đến dữ liệu nhạy cảm (thông tin ngân hàng, v.v.)
  • Nội dung dành riêng cho user và thường xuyên thay đổi

Ngoài các luật chung ở trên, bạn có thể chỉ định các policy cho phép bạn lưu các loại nội dung khác nhau một cách thích hợp. Ví dụ: nếu tất cả những user được xác thực đều thấy cùng một chế độ xem trang web , thì có thể lưu vào bộ nhớ cache của chế độ xem đó ở bất kỳ đâu. Nếu user được xác thực nhìn thấy chế độ xem trang web sẽ hợp lệ trong một thời gian, bạn có thể yêu cầu trình duyệt của user lưu vào bộ nhớ cache, nhưng yêu cầu bất kỳ cache trung gian nào không lưu chế độ xem.

Vị trí nơi nội dung web được lưu vào bộ nhớ cache

Nội dung có thể được lưu vào bộ nhớ đệm ở nhiều điểm khác nhau trong suốt chuỗi phân phối:

  • Bộ nhớ cache của trình duyệt : Các trình duyệt web tự duy trì một bộ nhớ cache nhỏ.Thông thường, trình duyệt đặt một policy chỉ định các mục quan trọng nhất vào bộ nhớ cache. Đây có thể là nội dung dành riêng cho user hoặc nội dung được coi là đắt để download và có khả năng được yêu cầu lại.
  • Các proxy bộ nhớ đệm trung gian : Bất kỳ server nào ở giữa client và cơ sở hạ tầng của bạn đều có thể lưu vào bộ nhớ cache nội dung nhất định như mong muốn. Các bộ nhớ đệm này có thể do ISP hoặc các bên độc lập khác duy trì.
  • Bộ nhớ đệm ngược : Cơ sở hạ tầng server của bạn có thể triển khai cache riêng của nó cho các dịch vụ backend . Bằng cách này, nội dung có thể được phân phối từ đầu mối liên hệ thay vì truy cập các server backend theo từng yêu cầu.

Mỗi vị trí này có thể và thường thực hiện các mục trong bộ nhớ cache theo policy bộ nhớ đệm của riêng chúng và các policy được đặt tại nguồn nội dung.

Tiêu đề bộ nhớ đệm

Chính sách lưu vào cache phụ thuộc vào hai yếu tố khác nhau. Bản thân thực thể bộ nhớ đệm sẽ quyết định có lưu nội dung được chấp nhận vào bộ nhớ đệm hay không. Nó có thể quyết định lưu vào bộ nhớ cache ít hơn mức được phép lưu vào bộ nhớ cache, nhưng không bao giờ nhiều hơn.

Phần lớn hành vi lưu vào bộ nhớ đệm được xác định bởi policy bộ nhớ đệm, do chủ sở hữu nội dung đặt. Các policy này chủ yếu được trình bày rõ ràng thông qua việc sử dụng các tiêu đề HTTP cụ thể.

Thông qua các lần lặp lại khác nhau của giao thức HTTP, một số tiêu đề tập trung vào bộ nhớ cache khác nhau đã phát sinh với các mức độ phức tạp khác nhau. Những điều bạn có thể vẫn cần chú ý dưới đây:

  • Expires : Tiêu đề Expires rất dễ hiểu, mặc dù phạm vi khá hạn chế. Về cơ bản, nó đặt thời gian trong tương lai khi nội dung sẽ hết hạn. Đến đây, bất kỳ yêu cầu nào cho cùng một nội dung sẽ phải quay trở lại server root . Tiêu đề này có lẽ chỉ được sử dụng tốt nhất như một phần lùi lại.
  • Cache-Control : Đây là sự thay thế hiện đại hơn cho tiêu đề Expires . Nó được hỗ trợ tốt và thực hiện một thiết kế linh hoạt hơn nhiều. Trong hầu hết các trường hợp, điều này thích hợp hơn với Expires , nhưng có thể không ảnh hưởng gì khi đặt cả hai giá trị. Ta sẽ thảo luận về chi tiết cụ thể của các tùy chọn bạn có thể đặt với Cache-Control sau một chút.
  • Etag : Tiêu đề Etag được sử dụng với xác thực cache . Nguồn root có thể cung cấp Etag duy nhất cho một mục khi nó phân phát nội dung ban đầu. Khi bộ nhớ cache cần xác thực nội dung mà nó có sẵn khi hết hạn, nó có thể gửi lại Etag mà nó có cho nội dung đó. Nguồn root sẽ cho bộ nhớ cache biết rằng nội dung là giống nhau hoặc gửi nội dung cập nhật (với Etag mới).
  • Last-Modified : Tiêu đề này chỉ định lần cuối cùng mục được sửa đổi. Điều này được dùng như một phần của chiến lược xác thực đảm bảo nội dung mới.
  • Content-Length : Mặc dù không liên quan cụ thể đến bộ nhớ đệm, nhưng tiêu đề Content-Length rất quan trọng cần đặt khi xác định policy bộ nhớ đệm. Một số phần mềm sẽ từ chối lưu nội dung vào bộ nhớ cache nếu nó không biết trước về kích thước của nội dung mà nó cần để dành dung lượng.
  • Vary : Bộ nhớ đệm thường sử dụng server được yêu cầu và đường dẫn đến tài nguyên làm khóa để lưu mục bộ nhớ cache.Tiêu đề Vary được dùng để yêu cầu bộ nhớ đệm chú ý đến tiêu đề bổ sung khi quyết định xem một yêu cầu có dành cho cùng một mục hay không. Điều này thường được sử dụng nhất để báo cho bộ nhớ đệm thành khóa bằng tiêu đề Accept-Encoding , để bộ nhớ đệm sẽ biết để phân biệt giữa nội dung được nén và không được nén.

Một bên về Vary Header

Tiêu đề Vary cung cấp cho bạn khả năng lưu trữ các version khác nhau của cùng một nội dung với chi phí làm loãng các mục nhập trong bộ nhớ cache.

Trong trường hợp Accept-Encoding , việc đặt tiêu đề Vary cho phép tạo ra sự khác biệt quan trọng giữa nội dung được nén và không được nén. Điều này là cần thiết để cung cấp chính xác các mục này cho các trình duyệt không thể xử lý nội dung nén và cần thiết để cung cấp khả năng sử dụng cơ bản. Một đặc điểm cho bạn biết rằng Accept-Encoding có thể là một thành phần tốt cho Vary là nó chỉ có hai hoặc ba giá trị có thể.

Thoạt nhìn, các mục như Tác nhân người User-Agent có thể là một cách tốt để phân biệt giữa trình duyệt trên thiết bị di động và máy tính để bàn để phục vụ các version khác nhau của trang web . Tuy nhiên, vì User-Agent chuỗi User-Agent user không phải là tiêu chuẩn, kết quả có thể sẽ là nhiều version của cùng một nội dung trên các bộ nhớ đệm trung gian, với tỷ lệ truy cập bộ nhớ cache rất thấp. Tiêu đề Vary nên được sử dụng một cách tiết kiệm, đặc biệt nếu bạn không có khả năng chuẩn hóa các yêu cầu trong cache trung gian mà bạn kiểm soát (điều này có thể xảy ra, chẳng hạn như nếu bạn tận dụng mạng phân phối nội dung).

Cách Cache-Control Flags Ảnh hưởng đến Cache

Ở trên, ta đã đề cập đến cách tiêu đề Cache-Control được sử dụng cho đặc tả policy bộ nhớ cache hiện đại. Một số hướng dẫn policy khác nhau có thể được đặt bằng cách sử dụng tiêu đề này, với nhiều hướng dẫn được phân tách bằng dấu phẩy.

Một số tùy chọn Cache-Control bộ nhớ đệm mà bạn có thể sử dụng để ra lệnh cho policy bộ nhớ đệm của nội dung là:

  • no-cache : Hướng dẫn này chỉ định rằng mọi nội dung được lưu trong bộ nhớ cache phải được xác thực lại theo từng yêu cầu trước khi được cung cấp cho client . Trên thực tế, điều này đánh dấu nội dung là cũ ngay lập tức, nhưng cho phép nội dung sử dụng kỹ thuật xác thực lại để tránh reload toàn bộ mục .
  • no-store : Hướng dẫn này cho biết nội dung không thể được lưu vào bộ nhớ cache theo bất kỳ cách nào. Điều này thích hợp để đặt nếu phản hồi đại diện cho dữ liệu nhạy cảm.
  • public : Điều này đánh dấu nội dung là công khai, nghĩa là nó có thể được trình duyệt và bất kỳ cache trung gian nào lưu vào bộ nhớ đệm. Đối với các yêu cầu sử dụng xác thực HTTP, các phản hồi được đánh dấu là private theo mặc định. Tiêu đề này overrides cài đặt đó.
  • private : Điều này đánh dấu nội dung là private . Nội dung riêng tư có thể được lưu trữ bởi trình duyệt của user , nhưng không được lưu trữ bởi bất kỳ bên trung gian nào. Điều này thường được sử dụng cho dữ liệu user cụ thể.
  • max-age : Cài đặt này cấu hình độ tuổi tối đa mà nội dung có thể được lưu vào bộ nhớ cache trước khi phải xác thực lại hoặc download lại nội dung từ server root . Về bản chất, điều này thay thế tiêu đề Expires cho trình duyệt hiện đại và là cơ sở để xác định độ mới của một phần nội dung. Tùy chọn này lấy giá trị của nó tính bằng giây với thời gian làm mới hợp lệ tối đa là một năm (31536000 giây).
  • s-maxage : s-maxage này rất giống với cài đặt max-age , trong đó nó cho biết lượng thời gian mà nội dung có thể được lưu vào bộ nhớ cache. Sự khác biệt là tùy chọn này chỉ được áp dụng cho các cache trung gian. Kết hợp điều này với điều trên cho phép xây dựng policy linh hoạt hơn.
  • must-revalidate : Điều này cho biết rằng thông tin làm mới được chỉ ra bởi tiêu đề max-age , s-maxage hoặc Expires phải được tuân theo nghiêm ngặt. Nội dung cũ không được phục vụ trong bất kỳ trường hợp nào. Điều này ngăn nội dung được lưu trong bộ nhớ cache được sử dụng trong trường hợp mạng bị gián đoạn và các trường hợp tương tự.
  • proxy-revalidate : Điều này hoạt động giống như cài đặt ở trên, nhưng chỉ áp dụng cho proxy trung gian. Trong trường hợp này, trình duyệt của user được dùng để cung cấp nội dung cũ trong trường hợp mạng bị gián đoạn, nhưng không thể sử dụng cache trung gian cho mục đích này.
  • no-transform : Tùy chọn này cho bộ nhớ đệm biết rằng chúng không được phép sửa đổi nội dung đã nhận vì lý do hiệu suất trong bất kỳ trường hợp nào. Điều này nghĩa là , ví dụ, bộ nhớ cache không thể gửi các version nén của nội dung mà nó không nhận được từ server root được nén và không được phép.

Chúng có thể được kết hợp theo nhiều cách khác nhau để đạt được các hành vi lưu vào bộ nhớ đệm khác nhau. Một số giá trị loại trừ lẫn nhau là:

  • no-cache , no-store và hành vi lưu trong bộ nhớ đệm thông thường được biểu thị bằng cách không có
  • publicprivate

Tùy chọn no-store sẽ thay thế no-cache nếu cả hai đều có. Đối với các phản hồi cho các yêu cầu chưa được xác thực, public được ngụ ý. Đối với các phản hồi cho các yêu cầu được xác thực, private được ngụ ý. Chúng có thể được overrides bằng cách bao gồm tùy chọn ngược lại trong tiêu đề Cache-Control .

Phát triển chiến lược lưu vào bộ nhớ đệm

Trong một thế giới hoàn hảo, mọi thứ có thể được lưu trữ linh hoạt và server của bạn sẽ chỉ được liên hệ để xác nhận nội dung đôi khi. Tuy nhiên, điều này không thường xuyên xảy ra trong thực tế, vì vậy bạn nên cố gắng cài đặt một số policy bộ nhớ đệm phù hợp nhằm mục đích cân bằng giữa việc triển khai bộ nhớ đệm dài hạn và đáp ứng các yêu cầu của một trang web đang thay đổi.

Các vấn đề chung

Có nhiều tình huống mà bộ nhớ đệm không thể hoặc không nên được triển khai do cách production nội dung (được tạo động cho mỗi user ) hoặc bản chất của nội dung (ví dụ: thông tin ngân hàng nhạy cảm). Một vấn đề khác mà nhiều administrator phải đối mặt khi cài đặt bộ nhớ đệm là tình huống các version cũ hơn của nội dung của bạn vẫn còn hoang dã, chưa cũ, ngay cả khi các version mới đã được xuất bản.

Đây đều là những vấn đề thường xuyên gặp phải có thể ảnh hưởng nghiêm trọng đến hiệu suất bộ nhớ cache và độ chính xác của nội dung bạn đang phân phối. Tuy nhiên, ta có thể giảm thiểu những vấn đề này bằng cách phát triển các policy bộ nhớ đệm dự đoán những vấn đề này.

Khuyến nghị chung

Mặc dù tình huống của bạn sẽ quyết định chiến lược bộ nhớ đệm mà bạn sử dụng, các đề xuất sau đây có thể giúp hướng dẫn bạn đến một số quyết định hợp lý.

Bạn có thể thực hiện một số bước nhất định để tăng tỷ lệ truy cập bộ nhớ cache trước khi lo lắng về các tiêu đề cụ thể mà bạn sử dụng. Một số ý tưởng là:

  • Cài đặt các folder cụ thể cho hình ảnh, css và nội dung chia sẻ : Đặt nội dung vào các folder chuyên dụng sẽ cho phép bạn dễ dàng tham khảo chúng từ bất kỳ trang nào trên trang web của bạn .
  • Sử dụng cùng một URL để tham chiếu đến các mục giống nhau : Vì khóa lưu trữ trong cache ẩn của cả server và đường dẫn đến nội dung được yêu cầu, hãy đảm bảo bạn tham chiếu đến nội dung của bạn theo cùng một cách trên tất cả các trang web . Khuyến nghị trước đây làm cho điều này dễ dàng hơn đáng kể.
  • Sử dụng các file hình ảnh CSS nếu có thể : Các file hình ảnh CSS cho các mục như biểu tượng và chuyển làm giảm số lần di chuyển vòng cần thiết để hiển thị trang web và cho phép trang web lưu vào bộ nhớ cache hình ảnh đó trong một thời gian dài.
  • Lưu trữ tập lệnh và tài nguyên bên ngoài local nếu có thể : Nếu bạn sử dụng tập lệnh javascript và các tài nguyên bên ngoài khác, hãy cân nhắc lưu trữ các tài nguyên đó trên server của bạn nếu tiêu đề chính xác không được cung cấp ngược dòng. Lưu ý bạn sẽ phải biết về bất kỳ cập nhật nào được thực hiện đối với tài nguyên ngược dòng để bạn có thể cập nhật bản sao local của bạn .
  • Các mục trong bộ nhớ cache fingerprint : Đối với nội dung tĩnh như file CSS và Javascript, có thể thích hợp để lấy dấu fingerprint từng mục. Điều này nghĩa là thêm một số nhận dạng duy nhất vào tên file (thường là một mã băm của file ) để nếu tài nguyên được sửa đổi, tên tài nguyên mới có thể được yêu cầu, khiến các yêu cầu bỏ qua cache một cách chính xác. Có nhiều công cụ có thể hỗ trợ tạo dấu fingerprint và sửa đổi các tham chiếu đến chúng trong trang HTML .

Về cách chọn tiêu đề chính xác cho các mục khác nhau, thông tin sau có thể dùng làm tài liệu tham khảo chung:

  • Cho phép tất cả các cache lưu trữ nội dung chung : Nội dung tĩnh và nội dung không dành riêng cho user có thể và phải được lưu vào bộ nhớ đệm ở tất cả các điểm trong chuỗi phân phối. Điều này sẽ cho phép các bộ nhớ đệm trung gian phản hồi nội dung cho nhiều user .
  • Cho phép trình duyệt lưu vào cache nội dung dành riêng cho user : Đối với nội dung của mỗi user , việc cho phép bộ nhớ đệm trong trình duyệt của user thường được chấp nhận và hữu ích. Mặc dù nội dung này sẽ không thích hợp để lưu vào bộ nhớ cache trên bất kỳ proxy bộ nhớ đệm trung gian nào, nhưng bộ nhớ đệm trong trình duyệt sẽ cho phép user truy xuất tức thì trong những lần truy cập tiếp theo.
  • Đặt ngoại lệ cho nội dung nhạy cảm về thời gian thiết yếu : Nếu bạn có nội dung nhạy cảm về thời gian, hãy thực hiện một ngoại lệ đối với các luật trên để nội dung lỗi thời không được phân phát trong các tình huống quan trọng. Ví dụ: nếu trang web có một giỏ hàng, nó sẽ phản ánh các mặt hàng trong giỏ hàng ngay lập tức. Tùy thuộc vào bản chất của nội dung, các tùy chọn no-cache hoặc no-store có thể được đặt trong tiêu đề Cache-Control để đạt được điều này.
  • Luôn cung cấp trình xác thực : Trình xác thực cho phép làm mới nội dung cũ mà không phải reload toàn bộ tài nguyên. Đặt Etag và các tiêu đề được Last-Modified cho phép bộ nhớ đệm xác nhận nội dung của chúng và phân phát lại nội dung đó nếu nội dung đó chưa được sửa đổi tại root , giúp giảm tải hơn nữa.
  • Đặt thời gian làm mới dài cho nội dung hỗ trợ : Để tận dụng hiệu quả bộ nhớ đệm, các yếu tố được yêu cầu làm nội dung hỗ trợ để đáp ứng yêu cầu thường phải có cài đặt làm mới lâu. Điều này thường thích hợp cho các mục như hình ảnh và CSS được kéo vào để hiển thị trang HTML mà user yêu cầu.Đặt thời gian làm mới kéo dài, kết hợp với tính năng lấy dấu fingerprint , cho phép bộ nhớ đệm lưu trữ các tài nguyên này trong thời gian dài. Nếu nội dung thay đổi, file tham chiếu đã sửa đổi sẽ làm mất hiệu lực của mục được lưu trong bộ nhớ cache và sẽ kích hoạt download nội dung mới. Cho đến lúc đó, các mục hỗ trợ có thể được lưu vào bộ nhớ cache trong tương lai.
  • Đặt thời gian làm mới ngắn cho nội dung root : Để làm cho schemas trên hoạt động, mục chứa phải có thời gian làm mới tương đối ngắn hoặc có thể hoàn toàn không được lưu vào bộ nhớ đệm. Đây thường là trang HTML gọi nội dung hỗ trợ khác. Bản thân HTML sẽ được download thường xuyên, cho phép nó phản hồi nhanh chóng với các thay đổi. Nội dung hỗ trợ sau đó có thể được lưu trữ mạnh mẽ.

Key là đạt được sự cân bằng ủng hộ bộ nhớ đệm tích cực nếu có thể trong khi để lại cơ hội làm mất hiệu lực các mục nhập trong tương lai khi các thay đổi được thực hiện. Trang web có thể sẽ có sự kết hợp của:

  • Các mục được lưu trong bộ nhớ cache linh hoạt
  • Các mục được lưu trong bộ nhớ cache có thời gian làm mới ngắn và khả năng xác thực lại
  • Các mục hoàn toàn không được lưu vào bộ nhớ đệm

Mục tiêu là chuyển nội dung vào các danh mục đầu tiên khi có thể trong khi vẫn duy trì mức độ chính xác có thể chấp nhận được.

Kết luận

Dành thời gian đảm bảo rằng trang web có các policy bộ nhớ đệm thích hợp có thể có tác động đáng kể đến trang web . Bộ nhớ đệm cho phép bạn cắt giảm chi phí băng thông liên quan đến việc phân phát cùng một nội dung nhiều lần. Server của bạn cũng sẽ có thể xử lý một lượng lớn lưu lượng truy cập với cùng một phần cứng. Có lẽ quan trọng nhất, khách hàng sẽ có trải nghiệm nhanh hơn trên trang web , điều này có thể khiến họ quay lại thường xuyên hơn. Mặc dù bộ nhớ đệm web hiệu quả không phải là một viên đạn bạc, nhưng việc cài đặt các policy bộ nhớ đệm phù hợp có thể mang lại cho bạn lợi ích có thể đo lường được với công việc tối thiểu.


Tags:

Các tin liên quan

Cách cài đặt Django Web Framework trên Ubuntu 14.04
2015-03-05
Cách cài đặt Django Web Framework trên CentOS 7
2015-03-05
Cách cài đặt và sử dụng GoAccess Web Log Analyzer với Apache trên Debian 7
2015-03-03
5 cách cải thiện thiết lập server ứng dụng web sản xuất của bạn
2015-02-11
Cách triển khai ứng dụng web Ruby dựa trên Sinatra trên Ubuntu 13
2014-02-20
Cách cấu hình web server theo cụm với Varnish và Nginx trên Ubuntu 13.10
2014-01-24
Cách triển khai các ứng dụng web Flask bằng uWSGI Behind Nginx trên CentOS 6.4
2014-01-14
Cách triển khai ứng dụng web CherryPy đằng sau Nginx Reverse-Proxy
2014-01-14
Cách tạo ứng dụng web với HMVC PHP5 Framework Kohana
2013-12-30
Hướng dẫn đơn giản về cách cài đặt ứng dụng trực diện web trên VPS
2013-12-09