Bộ nhớ đệm cho SEO
Cách bộ nhớ đệm của trình duyệt và máy chủ với Cache-Control, ETag và CDN cải thiện hiệu suất, Core Web Vitals, cùng những cạm bẫy ảnh hưởng tới hoạt động crawl.
Ngôn ngữ
Bộ nhớ đệm lưu bản sao của trang hoặc tài nguyên trong trình duyệt, tại edge CDN hoặc trong cache riêng của crawler để không phải tạo hay tải lại. Nó không phải yếu tố xếp hạng trực tiếp, nhưng hỗ trợ tốc độ trang / Core Web Vitals qua TTFB và LCP, đồng thời tăng hiệu quả crawl. Crawler của Google chỉ tuân theo ETag và Last-Modified, ưu tiên ETag và xem max-age như gợi ý crawl lại; các directive bộ nhớ đệm HTTP khác không được hỗ trợ. Rủi ro lớn nhất không phải thời lượng cache chậm mà là cấu hình sai CDN và cache cũ chặn bot hoặc khiến bot nhận nội dung sai.
Evidence for this claim HTTP caching uses Cache-Control and validators to control reuse and revalidation. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP caching Evidence for this claim Browser caches can reuse stored responses according to HTTP caching semantics. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP cachingTóm tắt — Bộ nhớ đệm là việc lưu một bản sao của trang hoặc tệp để không phải tạo và gửi lại từ đầu. Nhờ đó, website tải nhanh hơn cho cả người dùng lẫn bot tìm kiếm, đồng thời bot có thể bỏ qua việc tải lại những trang chưa thay đổi. Bản thân bộ nhớ đệm không giúp bạn xếp hạng cao hơn, nhưng tốc độ và hiệu quả thu thập dữ liệu mà nó mang lại đều hỗ trợ SEO theo cách gián tiếp.
Bộ nhớ đệm là gì
Mỗi khi ai đó mở một trang, máy chủ phải thực hiện nhiều công việc: tạo HTML, gửi hình ảnh, phân phối CSS và JavaScript. Bộ nhớ đệm lưu một bản sao sẵn dùng của các tài nguyên này để lần truy cập tiếp theo có thể tái sử dụng thay vì làm lại toàn bộ công việc.
Có ba nơi quan trọng với SEO mà một bản sao có thể được lưu:
- Bộ nhớ đệm của trình duyệt — tệp được lưu trên thiết bị của khách truy cập, nên lượt xem trang thứ hai hoặc lần quay lại có thể tải gần như tức thì.
- Bộ nhớ đệm CDN (edge) — các bản sao được lưu trên những máy chủ phân bố khắp thế giới, nên tệp được phục vụ từ vị trí gần người dùng hoặc bot thay vì từ một máy chủ gốc duy nhất.
- Bộ nhớ đệm riêng của crawler — Googlebot và Bingbot ghi nhớ liệu trang có thay đổi kể từ lần trước hay không và bỏ qua việc tải lại nếu trang không đổi.
Vì sao bộ nhớ đệm quan trọng với SEO
Có hai lý do và bạn nên phân biệt rõ:
- Tốc độ. Việc phân phối nhanh hơn cải thiện Core Web Vitals, đặc biệt là thời gian phản hồi của máy chủ (TTFB) và tốc độ hiển thị nội dung chính (LCP). Tốc độ là một phần trong các tín hiệu trải nghiệm trang của Google.
- Hiệu quả thu thập dữ liệu. Khi bot có thể xác định một trang chưa thay đổi, nó không phải lãng phí một lượt tải xuống. Trên website lớn, điều đó giúp bot dành thời gian cho các trang mới và vừa cập nhật.
Một điểm cần hiểu đúng
“Bản lưu của Google” và “bộ nhớ đệm HTTP” là hai khái niệm khác nhau. Toán tử tìm kiếm cũ cache: — tính năng “xem bản sao trang này mà Google đã lưu” — đã ngừng hoạt động năm 2024. Việc đó không liên quan đến loại bộ nhớ đệm được bàn trong bài này. Các header Cache-Control và ETag vẫn hoạt động và rất quan trọng. Việc Google không hiển thị “phiên bản được lưu” của trang không nói lên điều gì về tính đúng đắn của cấu hình bộ nhớ đệm.
Việc bạn thực sự nên làm
- Lưu đệm dài hạn các tệp tĩnh như hình ảnh, CSS, JavaScript và phông chữ.
- Dùng tên tệp có phiên bản hoặc hàm băm để có thể cập nhật chúng ngay khi cần.
- Dùng CDN để tệp được tải từ vị trí gần người dùng.
- Đừng vô tình để bộ nhớ đệm cũ hoặc bộ nhớ đệm dùng chung phục vụ nội dung sai cho bot — đây là dạng lỗi đáng ngại được trình bày trong các tab Nâng cao và Các anti-pattern.
Bạn muốn xem chi tiết ở cấp header — các directive Cache-Control, ETag so với Last-Modified, câu chuyện về crawl rate của CDN và những lỗi bộ nhớ đệm làm hỏng quá trình thu thập dữ liệu? Hãy chuyển sang tab Nâng cao.
Evidence for this claim Google's crawler documentation supports ETag/If-None-Match and Last-Modified/If-Modified-Since, prefers ETag when both are present, and says other HTTP caching directives are unsupported; Google's separate max-age advice is a recrawl-timing hint, not proof it follows browser cache semantics. Scope: Google crawling Confidence: high · Verified: Crawling December: HTTP caching Evidence for this claim HTTP caching uses Cache-Control and validators to control reuse and revalidation. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP caching Evidence for this claim Browser caches can reuse stored responses according to HTTP caching semantics. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP cachingTóm tắt — Bộ nhớ đệm hoạt động ở ba lớp quan trọng với SEO: trình duyệt, CDN edge và bộ nhớ đệm yêu cầu có điều kiện của crawler. Nó không phải yếu tố xếp hạng, nhưng thúc đẩy tốc độ trang (TTFB/LCP và — thông qua bfcache — Core Web Vitals của lượt điều hướng lặp lại) cũng như hiệu quả thu thập dữ liệu. Crawler của Google ưu tiên ETag hơn Last-Modified, chỉ đọc
max-agenhư gợi ý về thời điểm crawl lại và — theo tài liệu của chính Google — “other HTTP caching directives aren’t supported.” (bản dịch) “các directive bộ nhớ đệm HTTP khác không được hỗ trợ.” CDN có thể được Google cho crawl ở tốc độ cao hơn sau khi bộ nhớ đệm đã ấm; rủi ro thực sự là lúc ra mắt với bộ nhớ đệm lạnh và cấu hình sai CDN/WAF chặn hoàn toàn bot.
Ba lớp bộ nhớ đệm
Bộ nhớ đệm cho SEO không phải một cơ chế duy nhất mà gồm ba lớp, mỗi lớp được kiểm soát hơi khác nhau:
- Bộ nhớ đệm của trình duyệt — thiết bị của khách truy cập lưu tệp để các lượt xem lặp lại không cần truy cập mạng. Đây là vấn đề PageSpeed Insights nhắc đến qua cảnh báo “Serve static assets with an efficient cache policy” (bản dịch) “Phục vụ tài nguyên tĩnh bằng chính sách bộ nhớ đệm hiệu quả”.
- Bộ nhớ đệm CDN / edge — mạng phân phối nội dung lưu bản sao tại các node edge trên toàn thế giới; xem bài phân tích chuyên sâu về CDN và SEO để hiểu đầy đủ. Theo mô tả của Google, CDN là lớp trung gian giữa origin và người dùng, và trong lịch sử “biggest focus is caching” (bản dịch) “trọng tâm lớn nhất là lưu đệm”: lưu nội dung của URL để máy chủ của bạn không phải phục vụ lại tệp đó trong một khoảng thời gian.
- Bộ nhớ đệm phía crawler — Googlebot và Bingbot lưu hồ sơ riêng về việc nội dung có thay đổi hay không bằng các yêu cầu có điều kiện. Đây là đòn bẩy về crawl budget; cơ chế chi tiết thuộc bài về yêu cầu có điều kiện, còn ở đây tôi chỉ tóm tắt.
Cụm từ “bộ nhớ đệm của trình duyệt” ở trên là cách gọi tắt cho nhiều cơ chế. Theo hướng dẫn về bộ nhớ đệm HTTP của MDN, bạn nên phân biệt: bộ nhớ đệm HTTP riêng tư (theo từng trình duyệt, dùng request làm khóa và trên trình duyệt hiện đại còn được phân vùng theo website cấp cao nhất để hạn chế theo dõi chéo website), bộ nhớ đệm trong RAM của phiên hiện tại, bfcache được trình bày bên dưới và — tách biệt — Cache Storage của service worker, do JavaScript của website kiểm soát và không chịu sự điều khiển trực tiếp của header Cache-Control. “Kiểm tra bộ nhớ đệm trình duyệt” có thể là bốn quy trình gỡ lỗi khác nhau tùy cơ chế nào đang gặp sự cố.
Vì sao bộ nhớ đệm hỗ trợ Core Web Vitals
Tải tài nguyên qua mạng vừa chậm vừa tốn kém. Bộ nhớ đệm loại bỏ độ trễ mạng và chi phí truyền dữ liệu đối với mọi thứ chưa thay đổi. Điều đó tác động trực tiếp đến hai chỉ số liên quan tới Core Web Vitals: TTFB (response được lưu đệm bỏ qua việc tạo lại tại origin) và LCP (hình ảnh/CSS/phông chữ được lưu đệm render sớm hơn).
Những directive Cache-Control quan trọng
Cache-Control là header chính. Đây là những directive đáng biết:
max-age=<seconds>— khoảng thời gian một bản sao còn mới. Với tài nguyên bất biến có phiên bản, tài liệu Lighthouse của Chrome khuyến nghị lưu đệm một năm hoặc lâu hơn, chẳng hạnCache-Control: max-age=31536000.no-cache— không có nghĩa là “không lưu đệm”. Nó có nghĩa “hãy lưu, nhưng phải xác thực lại với máy chủ trước khi tái sử dụng”. Cơ chế này vẫn cho phép luồng 304 nhẹ.no-store— directive thực sự yêu cầu không lưu bất kỳ bản sao nào ở đâu trong bộ nhớ đệm HTTP. Đây là directive về bộ nhớ đệm, không phải công tắc quyền riêng tư tổng quát: theo RFC 9111, nó không phải cách đáng tin cậy để xóa lịch sử trình duyệt và không quy định gì về Cache Storage riêng của service worker.public/private— quy định bộ nhớ đệm dùng chung như CDN có được lưu response hay chỉ trình duyệt của người dùng cuối được lưu.immutable— bỏ qua hoàn toàn việc xác thực lại khi response vẫn còn mới. Nó không có nghĩa “không bao giờ cũ”; khimax-agehết hạn, các quy tắc về độ mới thông thường lại được áp dụng.must-revalidate— tác động ở đầu kia của dòng thời gian: chỉ có hiệu lực sau khi response trở nên cũ và yêu cầu cache phải xác thực lại với origin thay vì vẫn phục vụ bản sao cũ.s-maxage,stale-while-revalidate,stale-if-error— các cơ chế kiểm soát chi tiết chủ yếu dành cho CDN và bộ nhớ đệm dùng chung khác (lifetime riêng cho cache dùng chung, tái sử dụng bản cũ trong giới hạn khi request nền đang chạy và tái sử dụng bản cũ trong giới hạn khi origin lỗi). Mức hỗ trợ khác nhau theo trình duyệt/CDN, vì vậy hãy kiểm tra khả năng hỗ trợ hiện tại trước khi phụ thuộc vào chúng; như sẽ trình bày bên dưới, crawler của Google không tuân theo tập directive bổ sung này.
Phá bộ nhớ đệm bằng tên tệp có phiên bản
Mẹo giúp bạn vừa lưu đệm mạnh tay vừa cập nhật tức thì là đưa hàm băm nội dung vào tên tệp, chẳng hạn style.x234dff.css. URL là khóa bộ nhớ đệm, nên đổi tệp sẽ đổi URL và khiến cache tải phiên bản mới ngay, trong khi các phiên bản cũ vẫn có thể được lưu bao lâu tùy ý. Cả hướng dẫn bộ nhớ đệm HTTP của web.dev và bài viết kỹ thuật front-end của Bing đều mô tả cùng mẫu này: Bing băm nội dung tệp vào URL để “the URL acts as the cache key,” (bản dịch) “URL đóng vai trò khóa bộ nhớ đệm”, nhờ đó cache nhất quán và có thể dùng thời hạn dài.
Cạm bẫy bfcache — khi no-store âm thầm làm hại CWV
Đây là một vấn đề ít được đề cập. Bộ nhớ đệm back/forward (bfcache) giúp thao tác “quay lại” khôi phục trang tức thì. Một lần khôi phục từ bfcache bỏ qua hoàn toàn phép đo LCP/CLS/INP, nên chỉ có lợi cho dữ liệu thực địa CrUX. Tuy nhiên, theo hướng dẫn bfcache của Google, việc đặt Cache-Control: no-store trên chính document của trang từng khiến trình duyệt từ chối lưu trang đó vào bfcache. Nếu cần HTML luôn mới nhưng không muốn mất điều kiện dùng bộ nhớ đệm back/forward, hãy dùng no-cache hoặc max-age=0 thay cho no-store.
Cache quyết định “đủ mới” như thế nào
Trước khi dùng bất kỳ validator nào, cache kiểm tra độ mới: tuổi của response được lưu đã vượt lifetime mà Cache-Control quy định chưa (hoặc nếu không có lifetime rõ ràng, đã vượt thời gian heuristic mà cache được phép ước tính chưa)? Header response Age cho biết cache dùng chung đã giữ response bao lâu; nhờ đó bạn có thể xem trong DevTools hoặc log CDN còn lại bao nhiêu lifetime. Response còn mới có thể được tái sử dụng ngay mà không cần request. Response cũ phải được xác thực trước khi tái sử dụng; đây chính là lúc ETag/If-None-Match và Last-Modified/If-Modified-Since phát huy tác dụng. Phần tiếp theo trình bày phiên bản hẹp hơn của cơ chế HTTP tổng quát này dành cho Googlebot.
Cách Googlebot sử dụng bộ nhớ đệm để crawl hiệu quả
Trong bài Crawl tháng 12: bộ nhớ đệm HTTP tháng 12/2024, Google đưa ra yêu cầu thẳng thắn hiếm thấy: hãy bật bộ nhớ đệm để crawler có thể bỏ qua việc tải lại các trang không đổi. Điểm dữ liệu đáng chú ý là số lượt fetch có thể lưu đệm đã giảm: khoảng 0,026% tổng số lượt fetch có thể lưu đệm cách đây 10 năm, còn hiện nay con số đó là 0,017%. Các tỷ lệ đều nhỏ, nhưng rõ ràng Google muốn chúng tăng chứ không giảm.
ETag và Last-Modified — Google ưu tiên loại nào
Hạ tầng crawl của Google hỗ trợ hai validator tiêu chuẩn: ETag (với If-None-Match) và Last-Modified (với If-Modified-Since). Google “strongly recommends ETag” (bản dịch) “đặc biệt khuyến nghị dùng ETag” vì giá trị này không có cấu trúc nên ít gặp lỗi phân tích hơn chuỗi ngày tháng; nếu có cả hai, crawler “use the ETag value” (bản dịch) “dùng giá trị ETag” đúng theo tiêu chuẩn HTTP. Google vẫn đề nghị đặt cả hai vì “other applications such as CMSes” (bản dịch) “các ứng dụng khác như CMS” sử dụng chúng. Nếu dùng Last-Modified, ngày phải tuân theo định dạng HTTP, chẳng hạn Fri, 4 Sep 1998 19:15:56 GMT, nếu không sẽ không được phân tích.
Khi validator mà crawler lưu vẫn khớp, máy chủ trả về 304 Not Modified không có body — đó chính là mục đích. Theo Google, không có body nghĩa là máy chủ không phải tốn tài nguyên tính toán để “generating content” (bản dịch) “tạo nội dung” và không tốn băng thông truyền nội dung. Cơ chế 304 này là phần liên quan tới crawl budget được giải thích kỹ trong bài về yêu cầu có điều kiện; ở đây chỉ cần biết nó tồn tại và tiết kiệm chi phí cho cả hai phía.
Sắc thái mà hầu hết mọi người bỏ lỡ
Crawler của Google không thực thi toàn bộ tập directive Cache-Control như trình duyệt hoặc CDN. Theo tài liệu tổng quan chính thức về crawler, ngoài ETag/Last-Modified, “other HTTP caching directives aren’t supported.” (bản dịch) “các directive bộ nhớ đệm HTTP khác không được hỗ trợ”. Có một ngoại lệ một phần: Google nói bạn có thể tùy chọn đặt max-age để “help crawlers determine when to recrawl” (bản dịch) “giúp crawler xác định thời điểm crawl lại” một URL — đây là gợi ý, không phải khóa cứng. Vì vậy no-cache, s-maxage, stale-while-revalidate và các directive tương tự vẫn định hình hành vi trình duyệt/CDN nhưng không thay đổi cách Googlebot lưu đệm. Lời khuyên của Google về thời điểm vô hiệu hóa cache cũng hợp lý: yêu cầu làm mới cache “on significant changes” (bản dịch) “khi có thay đổi đáng kể”; chỉ cập nhật năm bản quyền ở footer thì không đáng kể.
CDN và hoạt động thu thập dữ liệu
CDN mang lại nhiều hơn tốc độ. Hạ tầng crawl của Google được thiết kế để cho phép “higher crawl rates on sites backed by a CDN” (bản dịch) “crawl rate cao hơn trên các website được CDN hỗ trợ”, suy ra từ địa chỉ IP phục vụ URL; Google giả định origin có CDN hỗ trợ có thể xử lý nhiều request đồng thời hơn.
Nhưng có một điểm cần tính trước: bộ nhớ đệm lạnh. Trong lần truy cập đầu tiên vào một URL, “the CDN’s cache is ‘cold’” (bản dịch) “bộ nhớ đệm của CDN đang ‘lạnh’” — chưa ai request URL đó, nên origin vẫn phải phục vụ ít nhất một lần để làm ấm cache. Vì vậy, Google cảnh báo việc ra mắt nhiều URL cùng lúc tạo gánh nặng thực sự lên crawl budget, với crawl rate cao trong vài ngày. Nếu triển khai quy mô lớn hoặc migration website, hãy dự trù origin phải chịu toàn bộ tải cho từng URL trước khi CDN bắt đầu hỗ trợ.
Cấu hình sai CDN là một rủi ro cho hoạt động crawl
Các vấn đề đáng sợ nhất liên quan tới bộ nhớ đệm không phải thời lượng cache chậm mà là cấu hình CDN và WAF chặn bot. Bài viết của Google về CDN nói rõ rằng với trường hợp chặn tạm thời, “HTTP 503/429 status codes” (bản dịch) “mã trạng thái HTTP 503/429” là cách ưu tiên để báo hiệu, trong khi timeout mạng được coi là lỗi “cứng”, có tính kết thúc và có thể khiến URL bị xóa khỏi index. Trường hợp tinh vi là soft block: một interstitial xác minh bot. Crawler chỉ nhìn thấy trang thử thách chứ không thấy website của bạn, vì vậy Google “strongly recommends returning a 503” (bản dịch) “đặc biệt khuyến nghị trả về 503” cho client tự động. “The easiest way to check” (bản dịch) “Cách dễ nhất để kiểm tra” CDN có âm thầm chặn Google hay không là công cụ URL Inspection trong Search Console: xem hình ảnh đã render; nếu xuất hiện thử thách bot hoặc trang trống, hãy làm việc với nhà cung cấp CDN.
Chuyển việc xử lý redirect sang CDN là kỹ thuật tôi ưa thích. Trên podcast Marketing Speak, tôi mô tả như sau: “One of my personal favorites that I don’t think it’s used enough, it’s actually just off loading your redirects to the CDN level.” (bản dịch) “Một trong những cách tôi thích nhất nhưng nghĩ rằng chưa được dùng đủ là chuyển hẳn việc xử lý redirect lên cấp CDN.” (Đi tới câu trích dẫn)
Những cạm bẫy bộ nhớ đệm làm hại việc crawl và index
Đây là góc nhìn mà hầu hết bài “bộ nhớ đệm cho SEO” bỏ qua. Cache không chỉ giúp mọi thứ nhanh hơn; một cache sai có thể phục vụ sai byte cho bot và làm hỏng quá trình crawl hoặc index.
Một trường hợp có thật: cache dùng chung phục vụ tệp robots.txt chặn bot. Tôi đã điều tra một vụ Googlebot bị chặn không liên tục và truy nguyên được nguyên nhân là cache CDN dùng chung giữa môi trường kiểm thử và website live. Như tôi viết trong bài Indexed, though blocked by robots.txt: “One possible cause would be a shared cache between a test environment and a live environment. When the cache from the test environment is active, the robots.txt file may include a blocking directive.” (bản dịch) “Một nguyên nhân có thể là cache dùng chung giữa môi trường kiểm thử và môi trường live. Khi cache từ môi trường kiểm thử hoạt động, tệp robots.txt có thể chứa directive chặn.” Cách khắc phục là tách cache hoặc loại trừ tệp .txt khỏi cache ở môi trường kiểm thử. Một cấu hình bộ nhớ đệm sai đã trực tiếp gây lỗi crawl; đây mới là loại rủi ro thực sự gây thiệt hại.
Các cạm bẫy khác cùng nhóm gồm:
- Cache CDN cũ phục vụ nội dung lỗi thời cho bot. Nếu edge cache giữ phiên bản cũ quá lâu sau khi bạn xuất bản thay đổi, bot sẽ tiếp tục thấy phiên bản đó. Hãy purge khi xuất bản hoặc gắn lifetime của cache với tần suất thay đổi thực tế của trang.
- Phân mảnh cache do
Vary/ User-Agent. Khóa của cache dùng chung thường chỉ là URL;Varythêm các header request nhưUser-AgenthoặcAccept-Languagevào khóa để lưu riêng từng biến thể. Nếu bỏ sót một header thực sự làm thay đổi response, requester này có thể nhận biến thể của requester khác — gây nhầm lẫn mobile/desktop hoặc bot/người. Nếu thêm quá nhiều header vàoVary, cache bị chia thành quá nhiều khóa gần giống nhau và hầu như không cải thiện hit rate. Ngoài ra, trình duyệt hiện đại còn phân vùng cache riêng theo website cấp cao nhất để bảo vệ quyền riêng tư; vì vậy tài nguyên được lưu khi nhúng trên website này thường không được tái sử dụng khi nhúng trên website khác. Đây là cơ chế khác vớiVary; đừng nhầm lẫn khi gỡ lỗi báo cáo “tại sao nội dung này không được lưu đệm”.
Nguyên tắc chung của tôi về thời lượng bắt nguồn từ các thử nghiệm chỉ số hiển thị nội dung lớn nhất. Trong hướng dẫn của Ahrefs về chỉ số này, tôi diễn đạt nguyên tắc như sau: “Your cache time should be as long as you are comfortable with” (bản dịch) “Thời gian lưu đệm nên dài đến mức bạn cảm thấy phù hợp”. Xem nguồn Tôi cũng mô tả cấu hình lý tưởng: “An ideal setup is to cache for a really long period of time but purge the cache when you make a change to a page.” (bản dịch) “Cấu hình lý tưởng là lưu đệm trong thời gian rất dài nhưng xóa cache khi bạn thay đổi trang.” Lưu dài hạn, xóa tức thì: sự kết hợp đó vừa giữ tốc độ vừa bảo đảm nội dung mới.
Bộ nhớ đệm có phải yếu tố xếp hạng không?
Không — ít nhất không trực tiếp. Không có tín hiệu xếp hạng nào cho việc đặt ETag hoặc có chính sách Cache-Control tốt. Điều bộ nhớ đệm thực sự làm là hỗ trợ hai yếu tố liên quan đến khả năng hiển thị: tốc độ trang / Core Web Vitals (một đầu vào rõ ràng của trải nghiệm trang) và hiệu quả crawl (quyết định tốc độ phát hiện và làm mới nội dung mới hoặc vừa cập nhật, qua đó gián tiếp tác động tới kết quả nhạy cảm với độ mới). Hãy cấu hình bộ nhớ đệm vì nó giúp website nhanh và dễ crawl, không phải vì mong đợi thứ hạng tăng trực tiếp.
Tóm tắt bằng AI
Phiên bản cô đọng của phần Nâng cao:
- Bộ nhớ đệm có ba lớp cho SEO: cache trình duyệt, cache CDN/edge và cache yêu cầu có điều kiện riêng của crawler. Mỗi lớp được kiểm soát hơi khác nhau.
- Không phải yếu tố xếp hạng, nhưng thúc đẩy hai yếu tố quan trọng: tốc độ trang (TTFB/LCP, cùng chỉ số cho lượt điều hướng lặp lại qua bfcache) và hiệu quả crawl.
- Kiến thức cơ bản về
Cache-Control:max-ageđặt độ mới (một năm trở lên cho tài nguyên bất biến có phiên bản);no-cachenghĩa là “lưu nhưng xác thực lại”, không phải “không lưu”;no-storenghĩa là không lưu;public/privatekiểm soát cache dùng chung/CDN. - Phá cache: đưa hàm băm nội dung vào tên tệp để vừa lưu đệm mạnh tay vừa cập nhật tức thì; cả Google và Bing đều dùng mẫu này.
- Cạm bẫy bfcache:
Cache-Control: no-storetrên document HTML có thể làm trang mất điều kiện dùng back/forward cache và âm thầm gây hại chỉ số CrUX. Hãy dùngno-cachehoặcmax-age=0thay thế. - Googlebot chỉ tuân theo ETag và Last-Modified; Google ưu tiên ETag và đọc
max-agenhư gợi ý thời điểm crawl lại. Theo Google, “other HTTP caching directives aren’t supported.” (bản dịch) “các directive bộ nhớ đệm HTTP khác không được hỗ trợ.” Validator khớp sẽ trả về304 Not Modifiedkhông có body, giúp tiết kiệm tài nguyên tính toán và băng thông. - Website dùng CDN có thể được crawl nhanh hơn, nhưng chỉ sau khi cache ấm. Khi khởi chạy với cache lạnh, origin vẫn bị truy cập một lần cho mỗi URL; hãy lập kế hoạch cho đợt ra mắt và migration lớn.
- Rủi ro lớn nhất không phải bộ nhớ đệm chậm mà là cấu hình sai CDN/WAF chặn bot (trả về 503/429 khi chặn tạm thời; chú ý interstitial soft block) và cache cũ/dùng chung phục vụ sai nội dung, chẳng hạn robots.txt chặn bot.
Tài liệu chính thức
Tài liệu nguồn sơ cấp từ các công cụ tìm kiếm và đội ngũ công cụ của họ.
- Crawling December: HTTP caching — bài tháng 12/2024 của Gary Illyes về ETag so với Last-Modified, cơ chế 304, số liệu lượt fetch có thể lưu đệm đang giảm và gợi ý crawl lại
max-age. - Tổng quan về Google Crawler (User Agent) — phần HTTP Caching — tài liệu được cập nhật liên tục về quy tắc ưu tiên ETag và tuyên bố “các directive bộ nhớ đệm HTTP khác không được hỗ trợ”.
- Crawl tháng 12: CDN và hoạt động crawl — Splitt và Illyes viết về bộ nhớ đệm CDN, crawl rate cao hơn, khởi chạy với cache lạnh và block cứng so với block mềm.
- Phục vụ tài nguyên tĩnh với chính sách bộ nhớ đệm hiệu quả — bài audit Lighthouse/PageSpeed và hướng dẫn “một năm hoặc lâu hơn” cho tài nguyên bất biến.
- Ngăn request mạng không cần thiết bằng HTTP Cache — tài liệu tham khảo về directive và mẫu phá cache bằng tên tệp có hàm băm.
- Back/forward cache (bfcache) — lý do
no-storetrên document HTML có thể làm mất điều kiện dùng bfcache. - Mục lục loạt bài Crawling December — toàn bộ loạt bài năm 2024 về Googlebot, bộ nhớ đệm HTTP, điều hướng có tham số và CDN.
Bing / Microsoft
- Hiệu suất front-end nhanh cho Microsoft Bing — đội ngũ kỹ thuật Bing trình bày cách băm nội dung tệp vào URL để cache nhất quán và có thời hạn dài, cùng vai trò của CDN trong việc tăng tốc phân phối tài nguyên tĩnh.
- Loạt bài bingbot: Tối đa hóa hiệu quả crawl — logic về độ mới khi crawl (crawl ít hơn nếu nội dung không đổi) mà bộ nhớ đệm hỗ trợ.
- Nguyên tắc dành cho quản trị website của Bing — trung tâm chứa hướng dẫn của Bing về CDN và hiệu suất.
Trích dẫn từ nguồn
Các tuyên bố công khai từ Google và bài viết của chính tôi. Mỗi liên kết sâu sẽ chuyển tới đoạn được trích trên trang nguồn.
Google — Crawling December: HTTP caching
- “While Google’s crawling infrastructure supports heuristic caching mechanisms, in fact always had, the number of requests that can be returned from local caches has decreased: 10 years ago about 0.026% of the total fetches were cacheable, which is already not that impressive; today that number is 0.017%.” (bản dịch) “Mặc dù hạ tầng crawl của Google hỗ trợ các cơ chế lưu đệm heuristic và thực tế luôn hỗ trợ, số request có thể được trả về từ cache cục bộ đã giảm: 10 năm trước khoảng 0,026% tổng số lượt fetch có thể lưu đệm — vốn đã không ấn tượng — còn hiện nay con số đó là 0,017%.” Đi tới câu trích dẫn
- “We strongly recommend using ETag because it’s less prone to errors and mistakes (the value is not structured unlike the Last-Modified value). And, if you have the option, set them both: the internet will thank you. Maybe.” (bản dịch) “Chúng tôi đặc biệt khuyến nghị dùng ETag vì nó ít gặp lỗi hơn (giá trị không có cấu trúc như giá trị Last-Modified). Nếu có thể, hãy đặt cả hai: internet sẽ cảm ơn bạn. Có lẽ vậy.” Đi tới câu trích dẫn
- “Our recommendation is that you require a cache refresh on significant changes to your content; if you only updated the copyright date at the bottom of your page, that’s probably not significant.” (bản dịch) “Khuyến nghị của chúng tôi là yêu cầu làm mới cache khi nội dung có thay đổi đáng kể; nếu bạn chỉ cập nhật ngày bản quyền ở cuối trang thì có lẽ đó không phải thay đổi đáng kể.” Đi tới câu trích dẫn
Google — Tổng quan về crawler (phần HTTP Caching)
- “If both ETag and Last-Modified response header fields are present in the HTTP response, Google’s crawlers use the ETag value as required by the HTTP standard.” (bản dịch) “Nếu cả trường header response ETag và Last-Modified đều có trong response HTTP, crawler của Google dùng giá trị ETag theo yêu cầu của tiêu chuẩn HTTP.” Đi tới câu trích dẫn
- “Other HTTP caching directives aren’t supported.” (bản dịch) “Các directive bộ nhớ đệm HTTP khác không được hỗ trợ.” Đi tới câu trích dẫn
Google — Crawling December: CDN và hoạt động crawl
- “Historically, CDNs’ biggest focus is caching, meaning that once a user requested a URL from your site, CDNs will store the contents of that URL in their caches for a time so your server doesn’t have to serve that file again for a while.” (bản dịch) “Trong lịch sử, trọng tâm lớn nhất của CDN là lưu đệm: sau khi người dùng request một URL trên website, CDN sẽ lưu nội dung URL đó trong cache một thời gian để máy chủ không phải phục vụ lại tệp ấy trong một khoảng thời gian.” Đi tới câu trích dẫn
Patrick Stox — về bộ nhớ đệm và CDN
- “Your cache time should be as long as you are comfortable with.” (bản dịch) “Nên đặt thời gian lưu đệm dài trong phạm vi bạn thấy phù hợp.” — tôi, trong hướng dẫn Largest Contentful Paint của Ahrefs. Đi tới câu trích dẫn
- “One possible cause would be a shared cache between a test environment and a live environment. When the cache from the test environment is active, the robots.txt file may include a blocking directive.” (bản dịch) “Có thể nguyên nhân là cache được chia sẻ giữa hệ thống test và website đang hoạt động. Lúc bản lưu từ hệ thống test có hiệu lực, tệp robots.txt có thể mang directive chặn.” — tôi, về một lỗi crawl thực tế được truy nguyên tới cache dùng chung. Đi tới câu trích dẫn
- “One of my personal favorites that I don’t think it’s used enough, it’s actually just off loading your redirects to the CDN level.” (bản dịch) “Một trong những cách tôi thích nhất nhưng nghĩ rằng chưa được dùng đủ là chuyển hẳn việc xử lý redirect lên cấp CDN.” — tôi, trên podcast Marketing Speak. Đi tới câu trích dẫn
Bộ nhớ đệm cho SEO — bảng tham khảo nhanh
Giải nghĩa các directive Cache-Control
| Directive | Ý nghĩa thực tế | Dùng cho |
|---|---|---|
max-age=31536000 | Còn mới trong khoảng 1 năm | Tài nguyên tĩnh bất biến, có phiên bản/hàm băm |
no-cache | Lưu nhưng xác thực lại trước khi tái sử dụng (vẫn dùng 304) | HTML cần luôn mới nhưng vẫn đủ điều kiện dùng bfcache |
no-store | Không lưu bản sao trong cache HTTP (không phải công tắc quyền riêng tư tổng quát) | Chỉ response thực sự nhạy cảm/riêng tư |
public | Cache dùng chung (CDN) được phép lưu | Tài nguyên có thể lưu trên CDN |
private | Chỉ trình duyệt của người dùng cuối được lưu | Response riêng theo người dùng |
immutable | Bỏ qua xác thực lại khi vẫn còn mới (không phải “không bao giờ cũ”) | Tài nguyên có fingerprint |
must-revalidate | Khi đã cũ, phải xác thực lại trước khi tái sử dụng — không phục vụ bản cũ khi lỗi | Nội dung mà response cũ sai còn tệ hơn việc chậm |
s-maxage | Độ mới dành riêng cho cache dùng chung (CDN) | Tách lifetime CDN với trình duyệt |
stale-while-revalidate / stale-if-error | Tái sử dụng bản cũ có giới hạn khi fetch lại / khi origin lỗi (mức hỗ trợ khác nhau) | Trang traffic cao, khả năng chống chịu khi origin lỗi |
Những gì Googlebot thực sự tuân theo
- ✅
ETag+If-None-Match(validator Google ưu tiên) - ✅
Last-Modified+If-Modified-Since(định dạng ngày theo HTTP:Fri, 4 Sep 1998 19:15:56 GMT) - ✅
max-age— nhưng chỉ là gợi ý thời điểm crawl lại, không phải quy tắc - ❌ Mọi directive khác — “other HTTP caching directives aren’t supported” (bản dịch) “các directive bộ nhớ đệm HTTP khác không được hỗ trợ”
Thông tin nhanh
- Google ưu tiên ETag; nếu đặt cả hai, ETag thắng. Dù vậy vẫn nên đặt cả hai vì CMS sử dụng chúng.
- Validator khớp →
304 Not Modified, không có body → tiết kiệm cả tài nguyên tính toán lẫn băng thông. - Chrome/Lighthouse: lưu đệm tài nguyên bất biến trong một năm hoặc lâu hơn.
- CDN được phép có crawl rate cao hơn, nhưng chỉ sau khi cache ấm.
- Chặn tạm thời? Trả về 503/429, không bao giờ dùng response 200 im lặng chứa lỗi hoặc interstitial cho bot.
no-storetrên document HTML có thể làm mất điều kiện dùng bfcache → dùngno-cache/max-age=0.- “Bản lưu Google” (toán tử
cache:) đã ngừng hoạt động năm 2024 — không liên quan tới bộ nhớ đệm HTTP.
Những hiểu lầm và sai sót về bộ nhớ đệm
Với từng trường hợp: vì sao sai và nên làm gì thay thế.
Hiểu lầm: “Lưu đệm trang sẽ giúp tôi tăng thứ hạng.” Vì sao sai: Cấu hình bộ nhớ đệm không phải tín hiệu xếp hạng. Đội ngũ Search Relations của Google đã nói rõ rằng bộ nhớ đệm không phải yếu tố xếp hạng. Nên làm: Thiết lập bộ nhớ đệm vì những lợi ích thực tế — tốc độ trang / Core Web Vitals và hiệu quả crawl — cả hai đều tác động gián tiếp tới khả năng hiển thị. Đừng mong đợi thứ hạng tăng trực tiếp.
Hiểu lầm: “Bản lưu của Google và bộ nhớ đệm HTTP là một.”
Vì sao sai: Toán tử tìm kiếm cache: và trình xem trang được lưu là tính năng snapshot dành cho người dùng, đã ngừng hoàn toàn năm 2024. Bộ nhớ đệm HTTP (Cache-Control/ETag) là hạ tầng không liên quan.
Nên làm: Bỏ qua việc không có “phiên bản được lưu”; điều đó không nói lên gì về cấu hình bộ nhớ đệm. Hãy đánh giá cache qua header và hành vi crawl/hiệu suất.
Hiểu lầm: “no-cache nghĩa là không lưu đệm.”
Vì sao sai: no-cache nghĩa là “lưu nhưng phải xác thực lại với máy chủ trước khi dùng”. Nó vẫn cho phép luồng xác thực lại 304. no-store mới là directive thực sự ngăn lưu trữ.
Nên làm: Dùng no-cache khi cần độ mới kèm xác thực lại; chỉ dành no-store cho response thực sự nhạy cảm và tuyệt đối không được lưu.
Hiểu lầm: “Thời lượng cache dài khiến Google luôn thấy nội dung cũ.”
Vì sao sai: Crawler của Google xác thực qua ETag/Last-Modified khi crawl lại bất kể max-age; max-age là gợi ý về thời điểm crawl lại, không phải khóa ngăn Google fetch lại.
Nên làm: Lưu đệm dài hạn nhưng kích hoạt cơ chế phá cache thực sự (ETag/Last-Modified hoặc URL mới) khi nội dung thay đổi đáng kể — đúng theo khuyến nghị của Google.
Hiểu lầm: “CDN tự động giải quyết vấn đề crawl budget.” Vì sao sai: CDN chỉ giúp sau khi cache đã ấm; origin vẫn phục vụ mọi URL ít nhất một lần (vấn đề cache lạnh), và CDN cấu hình sai có thể chặn crawler khiến tình hình tệ hơn. Nên làm: Lập kế hoạch tải cho origin khi ra mắt/migration lớn và xác minh CDN không chặn bot (dùng URL Inspection và trả về 503/429 khi chặn tạm thời).
Hiểu lầm: “Mọi directive Cache-Control tôi đặt đều thay đổi cách Googlebot crawl.”
Vì sao sai: Theo tài liệu Google, ngoài ETag/Last-Modified và gợi ý max-age tùy chọn, crawler không hỗ trợ “các directive bộ nhớ đệm HTTP khác”.
Nên làm: Dùng stale-while-revalidate, s-maxage, no-cache và các directive khác để điều chỉnh hành vi trình duyệt/CDN, nhưng hãy dựa vào ETag/Last-Modified để tác động tới việc lưu đệm của Googlebot.
Cấu hình bộ nhớ đệm: trước và sau
1. Tài nguyên tĩnh không có chính sách cache → cảnh báo PageSpeed biến mất
- Trước:
style.cssđược phục vụ không cóCache-Control; Lighthouse gắn cờ “Serve static assets with an efficient cache policy” (bản dịch) “Phục vụ tài nguyên tĩnh bằng chính sách bộ nhớ đệm hiệu quả”, và lượt truy cập lặp lại phải tải tệp lần nữa. - Sau: Đổi tên thành
style.a1b2c3.cssvà phục vụ vớiCache-Control: public, max-age=31536000, immutable. Lượt truy cập lặp lại bỏ qua việc tải xuống; nội dung thay đổi sẽ có tên tệp mới và vô hiệu hóa cache tức thì.
2. Document HTML cần “luôn mới” → mất bfcache
- Trước: Đặt
Cache-Control: no-storetrên HTML để buộc nội dung luôn mới. Tác dụng phụ: trang mất điều kiện dùng bfcache, nên thao tác “quay lại” đo lại LCP/CLS/INP và kéo giảm dữ liệu thực địa CrUX. - Sau: Chuyển sang
no-cachehoặcmax-age=0; nội dung vẫn được xác thực lại để bảo đảm độ mới, nhưng trang vẫn đủ điều kiện dùng bfcache và lượt điều hướng lặp lại được khôi phục tức thì.
3. Cache dùng chung giữa staging và production → Googlebot bị chặn không liên tục
- Trước: Môi trường kiểm thử và live dùng chung cache CDN. Khi phiên bản kiểm thử hoạt động,
robots.txtđược lưu chứa directive chặn, khiến Googlebot đôi lúc thấy lệnh disallow không nên có. - Sau: Tách cache giữa các môi trường hoặc loại tệp
.txtkhỏi cache của môi trường kiểm thử đểrobots.txtlive không bao giờ được phục vụ từ cache staging. Đây là trường hợp có thật tôi đã trình bày trong bài Indexed, though blocked by robots.txt.
4. Ra mắt quy mô lớn sau CDN → crawl tăng đột biến ngoài dự kiến
- Trước: Phát hành 50 000 URL mới cùng lúc với giả định CDN sẽ hấp thụ tải. Mọi URL đều là cache miss khi cache lạnh, nên origin phải phục vụ mỗi URL ít nhất một lần và crawl rate duy trì ở mức cao trong nhiều ngày.
- Sau: Làm ấm cache trước khi ra mắt hoặc triển khai theo từng giai đoạn, đồng thời dự kiến và cấp đủ tài nguyên để origin chịu toàn bộ tải cho từng URL trước khi CDN bắt đầu che chắn.
Checklist thiết lập bộ nhớ đệm HTTP
- Tài nguyên tĩnh (hình ảnh, CSS, JS, phông chữ) có
max-agedài — một năm trở lên cho tệp bất biến/có phiên bản. - Dùng tên tệp có phiên bản/hàm băm để có thể lưu đệm mạnh tay nhưng vẫn vô hiệu hóa tức thì.
- Đặt
ETag— validator Google ưu tiên; đồng thời đặtLast-Modifiedvới ngày đúng định dạng HTTP. - Máy chủ trả về
304 Not Modifiedkhông có body khi validator vẫn khớp. - Document HTML cần độ mới dùng
no-cache/max-age=0, không dùngno-store, để bảo vệ điều kiện dùng bfcache. - Thay đổi nội dung đáng kể kích hoạt cơ chế phá cache thực sự (ETag/Last-Modified/URL mới), không chỉ sửa ngày ở footer.
- CDN đứng trước origin, với
public/s-maxageđể cache dùng chung được phép lưu nội dung nên chia sẻ. - Cache được purge khi xuất bản để bot không bao giờ nhận nội dung cũ.
- Staging và production không dùng chung cache cho
robots.txthoặc các tệp điều khiển khác. - Trường hợp chặn tạm thời trả về
503/429, không phải trang lỗi trả 200 im lặng hoặc interstitial cho bot. - URL Inspection trong Search Console hiển thị trang thật của bạn, không phải thử thách hay trang trống, qua đó xác nhận CDN/WAF không chặn Googlebot.
Tệp đã cập nhật vẫn cũ sau khi triển khai
Triệu chứng: khách truy cập tiếp tục nhận tệp CSS, JavaScript hoặc hình ảnh cũ. Nguyên nhân có thể: cache có lifetime dài dùng cùng URL cho các byte đã thay đổi. Cách khắc phục: xuất bản tài nguyên bất biến với tên tệp chứa hàm băm nội dung và cập nhật tham chiếu trong HTML; chỉ purge đối tượng edge cũ khi chính URL được tái sử dụng. Xác nhận URL mới tải thành công.
Googlebot tải lại các trang không thay đổi
Triệu chứng: log cho thấy các response 200 đầy đủ lặp lại cho HTML không đổi. Nguyên nhân có thể: thiếu validator ETag/Last-Modified hoặc validator không ổn định. Cách khắc phục: phát validator ổn định và chính xác theo nội dung, rồi kiểm thử request có điều kiện. Khi hoạt động đúng, việc xác thực lại trả về 304 nếu representation không đổi.
Người dùng khác nhau nhận sai biến thể được lưu đệm
Triệu chứng: nội dung theo ngôn ngữ, thiết bị, trạng thái đăng nhập hoặc cá nhân hóa bị lộ giữa các người dùng. Nguyên nhân có thể: khóa cache dùng chung không chứa chiều làm thay đổi response hoặc nội dung riêng tư bị đánh dấu public. Cách khắc phục: sửa khóa cache và hành vi Vary, đánh dấu response riêng tư phù hợp, purge đối tượng bị nhiễm và kiểm thử lại nhiều biến thể.
Cache CDN không bao giờ báo hit
Triệu chứng: các request lặp lại đủ điều kiện vẫn tiếp tục đến origin. Nguyên nhân có thể: no-store/private, cookie, khóa cache bị phân mảnh quá mức hoặc quy tắc bỏ qua edge. Cách khắc phục: kiểm tra response và header trạng thái cache của CDN, chỉ thay đổi những quy tắc an toàn cho lớp nội dung đó, rồi request cùng khóa cache hai lần để xác nhận hit.
Lưu đệm theo rủi ro của representation, không chỉ theo phần mở rộng tệp
Phân loại từng response trước khi gán chính sách:
- Tài nguyên công khai bất biến: CSS, JS, phông chữ hoặc hình ảnh có hàm băm nội dung có thể dùng lifetime dài vì byte thay đổi sẽ nhận URL mới.
- Document công khai nhưng thay đổi: HTML có thể được lưu ngắn hạn hoặc xác thực lại bằng
ETag/Last-Modified; độ mới và khả năng sửa nhanh quan trọng hơn TTL tối đa. - Response riêng theo người dùng: lưu trong cache dùng chung là không an toàn, trừ khi phần cá nhân hóa bị loại khỏi representation hoặc được phân tách chính xác trong khóa cache.
- Response nhạy cảm: dùng chính sách nghiêm ngặt mà dữ liệu yêu cầu và chấp nhận đánh đổi hiệu suất thay vì làm lộ nội dung.
Câu hỏi hữu ích không phải “Tôi có thể lưu đệm loại này bao lâu?” mà là “Điều gì sẽ sai nếu chính representation này được tái sử dụng cho requester này sau thay đổi này?”
Độ mới, tính chính xác và hiệu quả
Chính sách bộ nhớ đệm phải vượt qua ba phép kiểm tra: độ mới (thay đổi xuất hiện đúng thời điểm đã hứa), tính chính xác (đúng requester nhận đúng biến thể) và hiệu quả (các byte không đổi không bị tạo hoặc truyền lại vô ích). Hit ratio cao không phải thành công nếu nó phục vụ sai response.
Công cụ kiểm tra bộ nhớ đệm HTTP
- Panel Network trong DevTools của trình duyệt — kiểm tra
Cache-Control,ETag,Last-Modified,Age,Varyvà xem response đến từ RAM, đĩa hay mạng. curl— gửi requestHEADvà request có điều kiện mà không bị cache trình duyệt gây mơ hồ; so sánh validator ban đầu vớiIf-None-MatchhoặcIf-Modified-Since.- PageSpeed Insights / Lighthouse — tìm tài nguyên tĩnh có chính sách cache kém hiệu quả; bài viết liên kết hướng dẫn chính thức của Lighthouse về chính sách cache.
- Phân tích và log CDN — kiểm tra trạng thái hit/miss/bypass, khóa cache, request tới origin và hoạt động purge tại lớp thực sự phục vụ response công khai.
- Log máy chủ — xác minh Googlebot nhận response xác thực lại
304thay vì body đầy đủ cho trang không đổi.
Chứng minh thay đổi bộ nhớ đệm hoạt động
Kiểm thử request có điều kiện
Cách kiểm thử: fetch response, sao chép ETag, rồi request lại với If-None-Match. Kết quả mong đợi: representation không đổi trả về 304 và không có body. Diễn giải khi thất bại: validator bị thiếu, không ổn định hoặc bị bỏ qua. Khoảng thời gian theo dõi: ngay lập tức. Điều kiện rollback: nội dung đã thay đổi bị trả lời sai bằng 304 hoặc validator xung đột giữa các biến thể.
Kiểm thử tài nguyên có phiên bản
Cách kiểm thử: triển khai byte đã thay đổi dưới URL mới chứa hàm băm nội dung và tải lại trang tham chiếu tới URL đó. Kết quả mong đợi: URL mới trả về tài nguyên mới trong khi URL cũ có thể vẫn được lưu đệm. Diễn giải khi thất bại: HTML vẫn tham chiếu tài nguyên cũ hoặc bản build không đổi hàm băm. Khoảng thời gian theo dõi: ngay sau khi HTML/CDN lan truyền. Điều kiện rollback: giao diện hỏng hoặc lỗi script trên tài nguyên mới.
Kiểm thử biến thể trong cache dùng chung
Cách kiểm thử: request mọi biến thể có ý nghĩa qua CDN, lặp lại từng request rồi so sánh body, khóa/trạng thái cache và Vary. Kết quả mong đợi: mỗi requester nhận đúng representation và chỉ biến thể an toàn được tái sử dụng. Diễn giải khi thất bại: khóa cache thiếu một chiều hoặc nội dung riêng tư bị chia sẻ. Khoảng thời gian theo dõi: ngay lập tức, cộng với việc xem lại log production. Điều kiện rollback: một người dùng nhận response cá nhân hóa hoặc response theo ngôn ngữ của người khác.
Tự kiểm tra: Bộ nhớ đệm cho SEO
Năm câu hỏi nhanh về bộ nhớ đệm HTTP, CDN và hoạt động crawl. Chọn một đáp án cho từng câu rồi kiểm tra kết quả.
Nhật ký thay đổi
Đã cập nhật 9 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 17 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.