Tắt bộ nhớ đệm của phần tử trang. HTTP caching
Mô tả bộ nhớ đệm. Giải quyết sự cố với các trình duyệt khác nhau và mô tả tiêu đề phản hồi của máy chủ chịu trách nhiệm lưu vào bộ nhớ đệm.
Quản trị viên web thường phải đối mặt với bộ nhớ đệm: trình duyệt và máy chủ proxy, cố gắng tăng tốc công việc của trang web, cố gắng lưu càng nhiều tài liệu vào bộ nhớ đệm càng tốt. Nếu bạn mở một trang web trong một trình duyệt, sau đó mở một trang khác và sau đó quay lại trang đầu tiên, với khả năng cao là trình duyệt sẽ lấy nó từ đĩa của bạn (hoặc thậm chí từ RAM), nơi nó đã lưu trang trên chuyến thăm đầu tiên.
Rõ ràng là thao tác này thường nhanh hơn nhiều so với việc lấy cùng một tài liệu từ mạng. Rốt cuộc, để hiển thị trang, bạn không chỉ cần lấy mã HTML mà còn phải tải xuống tất cả các tài liệu đi kèm từ mạng: tệp CSS, hình ảnh, tập lệnh được thiết kế dưới dạng tệp riêng biệt, v.v. Nếu bạn nhìn vào các thư mục bộ nhớ đệm trên đĩa của mình (đối với IE, thư mục này thường nằm ở đây: “C: \ Documents and Settings \ tên tài khoản\ Local Settings \ Temporary Internet Files ", dành cho Firefox:" C: \ Documents and Settings \ tên tài khoản\ Cài đặt cục bộ \ Dữ liệu ứng dụng \ Mozilla \ Firefox \ Hồ sơ \ _random_string_. default \ Cache "), bạn sẽ thấy có bao nhiêu tệp đã được lưu bởi trình duyệt của bạn.
Tất nhiên, bộ nhớ đệm giúp tăng tốc công việc lên rất nhiều, nhưng mặt khác, bộ nhớ đệm có thể đóng một vai trò tiêu cực.
Ví dụ: nếu trang trò chuyện được lưu trong bộ nhớ cache, thì người dùng sẽ không thấy tin nhắn mới. Các quản trị viên web thường coi bộ nhớ cache là một thứ xấu xa và hãy chiến đấu với cái ác này bằng hết khả năng của họ.
Sự cố vào bộ đệm trong Microsoft Internet Explorer
Internet Explorer lưu vào bộ nhớ cache các yêu cầu GET. Các tác giả không quen thuộc với bộ đệm HTTP cho rằng các yêu cầu GET không được lưu trong bộ đệm hoặc bộ đệm có thể bị bỏ qua, như trong trường hợp nhấp vào nút làm mới. Trong một số tình huống, tránh bộ nhớ đệm thực sự là một sai lầm. Một giải pháp là sử dụng phương thức POST, phương thức này không bao giờ được lưu trong bộ nhớ cache; tuy nhiên, nó được dành cho các hoạt động khác. Một giải pháp khác là sử dụng phương thức yêu cầu GET bao gồm một chuỗi truy vấn duy nhất với mỗi lần gọi, như được minh họa trong ví dụ bên dưới.
Req.open ("GET", "xmlprovider.php? Hash =" + Math.random ());
hoặc đặt tiêu đề Expires thành một ngày trong quá khứ trong tập lệnh tạo nội dung XML của bạn. Trong PHP, nó sẽ như thế này:
// vô hiệu hóa tiêu đề bộ nhớ đệm của IE ("Hết hạn: Thứ Hai, ngày 26 tháng 7 năm 1997 05:00:00 GMT"); header ("Lần sửa cuối:". gmdate ("D, d M Y H: i: s"). "GMT"); header ("Cache-Control: no-cache, must-revalidate"); header ("Pragma: no-cache"); ...
Mã PHP quen thuộc? Tôi chắc rằng bạn đã viết nó (như một quy luật, sử dụng Sao chép dán) Trong công việc của họ. Nhưng! Có một điều rất quan trọng là "NHƯNG" ở đây: không có cách nào coi thường tầm quan trọng và thẩm quyền của Wikipedia, chúng tôi chỉ lưu ý một thực tế đáng tiếc rằng mã này là SAI! Bạn có muốn bị thuyết phục? Một cách dễ dàng!
Kiểm tra bộ nhớ đệm
Vì vậy, hãy bắt đầu Apache với các cài đặt mặc định, tiêu chuẩn. Sau đây, chúng tôi sử dụng Apache và PHP. Nhưng điều này không có nghĩa là sự cố được mô tả và các tùy chọn cho giải pháp của nó không có sẵn trên nền tảng của các máy chủ khác, chẳng hạn như Microsoft IIS. Vì vậy, hãy bắt đầu Apache. Tạo một thư mục bộ đệm thử nghiệm trống trong thư mục gốc của máy chủ và đặt tệp test-1.php vào đó với nội dung sau:
", ngày (" H: i: s "),""; ?>
Dễ dàng nhận thấy rằng trong ví dụ đã cho chúng ta cố gắng vô hiệu hóa bộ nhớ đệm theo công thức của Wikipedia và chỉ hiển thị thời gian hiện tại.
Bài viết liên quan: Lưu trữ không tốn kém với cấu hình riêng lẻ
Bây giờ hãy thử xem thư mục của bạn trong trình duyệt. Để thực hiện việc này, hãy mở trình duyệt của bạn và nhập vào thanh địa chỉ
Tốt! Bây giờ hãy nhấp vào tệp test-1.php của bạn và ghi nhớ thời gian (ví dụ: tôi đã đặt một cửa sổ trình duyệt bên cạnh đồng hồ Windows):
Tuyệt vời! Bây giờ hãy nhấp vào các nút "Quay lại" trong trình duyệt và sau đó nhấp vào "Chuyển tiếp":
Giáo sư! Thời gian không thay đổi !!! Nó có nghĩa là gì? Có, chỉ là trình duyệt lấy trang từ bộ nhớ cache !!! Nhưng những gì về của chúng tôi bách khoa toàn thư mã số? Nó không hoạt động!
Hãy chuyển sang các nguồn chính
Vấn đề là gì? Vấn đề là sử dụng tiêu đề phản hồi không chính xác. Trong đặc điểm kỹ thuật RFC2616 toàn bộ chương được dành cho bộ nhớ đệm. Thật không may, quản trị viên web không thường xuyên đọc thông số kỹ thuật. Vậy những tiêu đề mà chúng ta vừa duyệt qua có ý nghĩa gì? Hãy xem chúng. Rất thuận tiện để thực hiện việc này bằng tiện ích bổ sung Thanh công cụ dành cho nhà phát triển web của Firefox cho trình duyệt: Thông tin. Xem tiêu đề phản hồi(đối với IE, một công cụ tương tự được gọi là DevToolbar):
Vì vậy, chúng tôi đã chuyển các tiêu đề sau:
Hết hạn: Thứ Hai, ngày 26 tháng 7 năm 1997 05:00:00 GMT- tiêu đề này đặt thời gian khi thông tin được cập nhật. Chúng tôi đang cố gắng chuyển ngày trong quá khứ, giả sử rằng điều này sẽ buộc trình duyệt tải trang từ máy chủ mọi lúc. Nó không ép buộc, như chúng tôi đã nhận thấy từ kinh nghiệm.
Lần sửa cuối: Thứ bảy, ngày 26 tháng 1 năm 2008 17:03:02 GMT- Ngày giờ thay đổi thông tin trên trang. Tiêu đề này không ảnh hưởng đến bộ nhớ đệm theo bất kỳ cách nào (đọc trong RFC2616!), Ngoại trừ việc nó có thể được sử dụng cho một yêu cầu với trình xác thực. Ví dụ: một trình thu thập thông tin có thể yêu cầu dữ liệu như sau:
Đó là, " cung cấp tài liệu nếu nó đã thay đổi kể từ ngày được chỉ định", Và máy chủ sẽ phản hồi bằng 200 (" Đây là tài liệu, nó đã thay đổi! "Hoặc 304" Không có thay đổi nào. ". Nhưng chính chúng ta, bằng chính đôi tay của mình và thật ngu ngốc bách khoa toàn thư mã hoàn toàn phá hủy những hy vọng cuối cùng cho nó! Có nghĩa là, chúng tôi không những không cấm bộ nhớ cache mà còn cho các công cụ tìm kiếm (hay nói đúng hơn là CHÍNH BẠN) triệt để! Rốt cuộc, bạn đã vượt qua ngày HIỆN TẠI là ngày thay đổi cuối cùng, nhớ không?
Cache-Control: no-cache, phải xác thực lại- bây giờ, gần với chủ đề hơn. Chính tiêu đề này điều khiển bộ nhớ đệm, nhưng không phải tự nó mà kết hợp với những người khác. Bây giờ chúng ta vừa chuyển lệnh sau: "Nếu lệnh no-cache không chỉ định tên trường, thì cache KHÔNG ĐƯỢC sử dụng phản hồi để đáp ứng yêu cầu tiếp theo mà không được xác thực lại thành công với máy chủ gốc). Về cơ bản, trong biểu mẫu này, nó là một lệnh không dành cho trình duyệt mà dành cho máy chủ proxy.
Bài viết liên quan: Cách chọn máy chủ cho một trang WordPress: mẹo cho người mới bắt đầu
Pragma: no-cache- thiết kế lỗi thời. Đây là phiên bản cũ của giao thức HTTP / 1.0. Hầu như tất cả các trình duyệt và proxy đều bỏ qua nó. Vì vậy, chúng ta có thể thấy rằng không có dòng mã PHP nào thực sự vô hiệu hóa bộ nhớ cache. Để làm gì? Đây là những gì:
Không cho phép lưu vào bộ nhớ đệm
Lưu lại tệp test-1.php với tên mới là test-2.php và thay đổi nó như sau:
", ngày (" H: i: s "),""; ?>
Bây giờ hãy thử mở lại thư mục thử nghiệm của chúng tôi // localhost / test-cache /, nhấp vào tên test-2.php và bây giờ nhấp vào các nút Quay lại, Chuyển tiếp. Thời gian luôn thay đổi! Và điều này cho thấy rằng trình duyệt không lấy trang từ bộ nhớ cache khi tiến / lùi, mà yêu cầu lại từ máy chủ. Trên thực tế, chúng ta cần gì và cần gì. Hãy xem các tiêu đề phản hồi:
Đây rồi! Chúng tôi chuyển hai tiêu đề:
Cache-Control: no-store- trang chứa dữ liệu riêng tư, bạn không thể lưu vào bộ nhớ đệm! (Mục đích của chỉ thị không có cửa hàng là ngăn chặn việc vô tình phát hành hoặc lưu giữ thông tin nhạy cảm (ví dụ: trên các băng sao lưu))
Hết hạn: Thứ Bảy, ngày 26 tháng 1 năm 2008 20:31:55 +0300- mức độ liên quan của trang hết hạn ngay lập tức, tức là ngay bây giờ.
Và chính những tiêu đề này cấm bộ nhớ đệm trong trình duyệt. Nhưng vẫn đúng hơn nếu thêm hướng dẫn cho máy chủ proxy vào tiêu đề Cache-Control (file test-3.php):
", ngày (" H: i: s "),""; ?>
Thực tế không cho phép lưu vào bộ nhớ đệm
Như vậy, chúng ta đã tìm hiểu cách tắt bộ nhớ đệm. Điều này có nghĩa là bạn cần đưa đoạn mã trên vào tất cả các trang của mình? Không có gì! Nếu bạn cần tắt bộ nhớ đệm trong tất cả các tệp trong một thư mục (và không chỉ cho các tập lệnh php thực thi), bạn có thể định cấu hình máy chủ Apache để chuyển các tiêu đề mà chúng ta cần. Để thực hiện việc này, hãy mở tệp cấu hình máy chủ Apache và đảm bảo rằng các dòng sau được bỏ ghi chú (hoặc tự bỏ ghi chú chúng):
LoadModule expires_module modules / mod_expires.so LoadModule headers_module modules / mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c
Tốt! Bây giờ chỉ cần tạo một tệp .htaccess trong thư mục của bạn và viết những điều sau vào đó:
# # Tắt bộ nhớ đệm trong thư mục này # Phải bật mô-đun # mod_headers.c và mod_expires.c # # Cache-Control header
Mọi điều! Các tiêu đề cần thiết được chuyển tự động và không cần phải viết chúng cụ thể bằng PHP - bộ đệm ẩn đã bị tắt! Bạn có thể dễ dàng xác minh điều này nếu bạn nhìn vào các tiêu đề được truyền khi yêu cầu BẤT KỲ tệp nào trong thư mục này:
Độ phân giải bộ nhớ đệm
Tuy nhiên, mặc dù thực tế là số lượng lớn các quản trị viên web coi bộ nhớ cache là một tệ nạn phổ biến và đang cố gắngđể cấm nó (và, như chúng ta đã thấy, khá không thành công), nó không phải là! Bằng cách tắt bộ nhớ đệm, bạn buộc trình duyệt phải tải lại các trang của mình từ máy chủ mỗi lần và nếu kênh giao tiếp của người dùng yếu, điều này có thể dẫn đến việc làm việc với trang web của bạn bị chậm lại đáng kể. Tôi thậm chí không nói về thực tế là điều này dẫn đến việc tăng tải trên máy chủ của bạn! Nếu trang của bạn hoặc một phần của nó được hình thành bởi các truy vấn trong cơ sở dữ liệu, bạn sẽ tăng tải trên máy chủ cơ sở dữ liệu, điều này có thể có ảnh hưởng cực kỳ tiêu cực đến hiệu suất của toàn bộ máy chủ của bạn. Bạn hiểu những gì tôi đang nói, chẳng hạn, hãy xem tác phẩm của Odnoklassniki.ru! Một số quản trị viên web cũng khoe khoang, hiển thị những "thống kê" như vậy ở cuối trang: " Trang được tạo trong 0,9 giây, 9 truy vấn SQL được thực thi". Nó không hiển thị bất cứ điều gì khác ngoài kiến trúc hoàn toàn ngốc nghếch của Ứng dụng web!
Mỗi lần kết quả của một yêu cầu như vậy sẽ được lưu vào bộ nhớ đệm, nhưng vì bộ nhớ đệm được thực hiện trên toàn bộ url nên mỗi lần sẽ nhận được một url mới và trình duyệt sẽ buộc phải yêu cầu một tài nguyên từ máy chủ, vì url của cả hai yêu cầu sẽ không khớp chính xác.
Các trường tiêu đề
Bạn cũng có thể quản lý bộ nhớ đệm từ phía máy chủ. Để thực hiện việc này, tài nguyên được gửi đến trình duyệt kèm theo các trường tiêu đề. Bạn có thể tìm thấy mô tả chi tiết về các trường tiêu đề trong tiêu chuẩn RFC 2068, mô tả giao thức HTTP 1.1.
Trường tiêu đề hết hạn
Giá trị của tiêu đề này là ngày mà sau đó nội dung của tài nguyên sẽ hết hạn. Nếu người dùng sau ngày này truy cập tài nguyên, trình duyệt phải yêu cầu tài nguyên từ máy chủ, không phải từ bộ đệm cục bộ.
Nếu trường> Hết hạn< содержит дату, прошедшую, по отношению к текущей, то при следующем обращении к ресурсу браузер будет вынужден снова обратиться к серверу. Это произойдет вследствие того, что либо документ не будет занесен в кэш - как уже устаревший, либо при обращении к кэшу браузер определит, что документ уже устарел. Следующий листинг на PHP демонстрирует использование заголовка Expires:
Trường tiêu đề được sửa đổi lần cuối
Giá trị của tiêu đề này là ngày tài nguyên được cập nhật lần cuối. Hầu hết các trình duyệt hiện đại sử dụng thuật toán sau khi tài nguyên đã có trong bộ đệm ẩn cục bộ:
- hỏi máy chủ về ngày cập nhật cuối cùng của tài nguyên
- so sánh ngày đã nhận và ngày của tài nguyên trong bộ đệm ẩn cục bộ
- nếu tài nguyên trên máy chủ mới hơn tài nguyên trong bộ đệm, thì tài nguyên đó được yêu cầu từ máy chủ
Nếu tài nguyên nằm trên máy chủ chứa ngày hiện tại trong trường này, thì mỗi lần trình duyệt sẽ yêu cầu tài nguyên đó từ máy chủ chứ không phải từ bộ đệm cục bộ. Danh sách sau minh họa việc sử dụng trường tiêu đề Được sửa đổi lần cuối:
Header ("Lần sửa cuối:". Gmdate ("D, d M Y H: i: s"). "GMT");
Các trường Cache-Control và Pragma Header
Cuối cùng, có các trường tiêu đề chịu trách nhiệm trực tiếp cho việc lưu trữ tài nguyên vào bộ nhớ đệm. Đồng ruộng
Trường thứ hai được định nghĩa trong tiêu chuẩn RFC 2068, mô tả giao thức HTTP 1.1. Trường tiêu đề này cho phép bạn tắt bộ nhớ đệm và mỗi lần yêu cầu tài nguyên từ máy chủ. Danh sách sau minh họa việc sử dụng các trường tiêu đề Cache-Control và Pragma để vô hiệu hóa bộ nhớ đệm:
Header ("Cache-Control: no-cache, must-revalidate"); header ("Pragma: no-cache");
Làm cách nào để tắt bộ nhớ đệm?
Câu trả lời của chủ nhân:
Tài liệu lưu vào bộ nhớ đệm không phải lúc nào cũng hữu ích về hiệu suất trình duyệt nhanh. Để vô hiệu hóa nó, bạn cần biết các tính năng vốn có trong mỗi trình duyệt Internet. Làm cách nào để tắt bộ nhớ đệm trong các trình duyệt internet phổ biến nhất?
Hãy làm như sau nếu Mozilla Firefox được sử dụng. Nhập opera: config vào thanh địa chỉ của trình duyệt. Một cửa sổ hiện ra cảnh báo bạn phải cực kỳ cẩn thận. Nhấp vào "Ok". Chúng tôi tìm thấy "Bộ lọc", ở đó chúng tôi nhập browser.cache. Sau đó, không quá mười dòng sẽ vẫn còn trong cài đặt.
Để tắt bộ nhớ đệm, hãy tìm browser.cache.disk.enable và browser.cache.memory.enable. Hãy tập trung vào trường giá trị. Cả hai dòng này đều đúng. Hãy thay đổi nó thành false. Sau đó, khởi động lại trình duyệt để mọi thay đổi có hiệu lực. 2. Thực hiện như sau nếu sử dụng Internet Explorer. Trong menu, mở "Dịch vụ", sau đó nhấp vào cửa sổ "Tùy chọn Internet". Cửa sổ thuộc tính của trình duyệt sẽ mở ra. Chuyển đến tab "Chung", nhấp vào "Tùy chọn" ở đó.
Sau đó, trong bộ chọn "Kiểm tra các trang đã lưu cập nhật", hãy chọn "Không bao giờ". Để tắt bộ nhớ đệm, hãy đặt số 0 bên cạnh cửa sổ "Dung lượng đĩa đã sử dụng". Sau đó, nhấp vào "OK" để chấp nhận các thay đổi.
Nếu sử dụng Opera. Nhấn các phím Ctrl + F12, sau đó chọn "Cài đặt chung". Hãy chuyển đến tab "Nâng cao", sau đó đến "Lịch sử". Tab In-Memory Cache, cũng như Disk Cache, sẽ được đặt thành Disabled để vô hiệu hóa bộ nhớ đệm. Trong cửa sổ "Kiểm tra tài liệu" và "Kiểm tra hình ảnh" chọn "Không bao giờ". Sau đó "OK", các thay đổi sẽ có hiệu lực.
Nếu sử dụng Google Chrome. Nhấp chuột phải vào phím tắt để khởi chạy trình duyệt. Sau khi menu ngữ cảnh xuất hiện, hãy chọn cửa sổ "Thuộc tính". Sau đó, trong cửa sổ xuất hiện, hãy chuyển đến tab "Phím tắt". Trong cửa sổ chỉ định địa chỉ tệp, hãy thêm “-disk-cache-size = 0-media-cache-size = 0”. Hãy đặt lệnh này sau dấu ngoặc kép của địa chỉ tệp. Hãy áp dụng các thay đổi.
Nó không phải lúc nào cũng hữu ích cho tất cả các trang web để lưu vào bộ nhớ cache tất cả hoặc các trang riêng lẻ. Điều này có vẻ lạ đối với một số người, vì bộ nhớ đệm giảm tải trên máy chủ, đặc biệt là khi có nhiều hoạt động và sự tham gia của khách truy cập, nhưng không phải đối với những người cập nhật nội dung quá thường xuyên trên các trang của trang web hoặc dịch vụ web và khách truy cập. sẽ luôn nhận được thông tin mới nhất và cập nhật trên mỗi lần tải trang. Các tài nguyên web này bao gồm các cuộc trò chuyện trên web, cuộc thăm dò ý kiến, trò chơi, tin tức, quầy và những thứ tương tự. Bài viết này sẽ giới thiệu các phương pháp để vô hiệu hóa bộ nhớ đệm của các trang của trang web.
Đây không phải là về cách vô hiệu hóa bộ đệm chỉ trong trình duyệt, mà là về cách vô hiệu hóa bộ nhớ đệm nội dung phía máy chủ. Nhiều người có thể biết các phương pháp vô hiệu hóa bộ nhớ đệm trong tiêu đề của các trang HTML, chẳng hạn như những phương pháp được đề cập trong Wikipedia, chẳng hạn như
Ngoài ra, bạn có thể sử dụng như
Dòng đầu tiên khuyến nghị không cho phép hoàn toàn vào bộ nhớ đệm và dòng thứ hai cho trình duyệt biết rằng trang đang được sử dụng ở chế độ riêng tư, vì vậy nội dung của nó không nên được lưu vào bộ nhớ đệm. Các thẻ meta ở dòng thứ ba và thứ tư chỉ ra rằng độ tuổi bộ nhớ cache được giới hạn ở max-age = 10800 (tương ứng là 3 giờ) cho trình duyệt và cho proxy.
Tuy nhiên, các khuyến nghị được đưa ra ở trên làm ví dụ là tốt, chỉ dành cho những chủ sở hữu trang web không có quyền truy cập vào các tập lệnh PHP và phù hợp hơn với các trang không động. Như họ nói, đây là "cơ hội cuối cùng", và chỉ vì nhiều trình duyệt, và bên cạnh đó, vô số phiên bản của chúng, ngày càng ít chú ý đến những gì được viết trong phần HEAD của các trang web. Mỗi người trong số họ “tự mình vén chăn lên”, không phải tất cả và không phải lúc nào cũng tuân thủ một số tiêu chuẩn. Nói cách khác, những gì đã nói ở trên có thể không hoạt động.
Tắt bộ nhớ đệm trang trong PHP
Một giải pháp thay thế cho điều này là vô hiệu hóa bộ nhớ đệm của các trang web sử dụng tập lệnh PHP, cụ thể là sử dụng tiêu đề (...); , cho phép bạn thêm các tham số và chỉ thị cần thiết vào tiêu đề gói HTTP. Hiện tại, các phiên bản mới nhất của các trình duyệt phổ biến và do đó, các máy chủ xử lý các tiêu đề gói HTTP này ít nhiều giống nhau. Về vấn đề này, một cách đáng tin cậy và linh hoạt hơn để tắt bộ nhớ đệm là sử dụng PHP.
Dưới đây là một ví dụ về một dấu hiệu đơn giản về thời gian lưu vào bộ nhớ đệm của các trang trên trang web:
Tuy nhiên, trên thực tế, điều này chỉ ra rằng điều này có thể là chưa đủ và sau nhiều lần thử nghiệm với các trình duyệt khác nhau, lựa chọn tốt nhất là vô hiệu hóa bộ nhớ đệm trong PHP sẽ có một cách tiếp cận như vậy:
Trong một số trường hợp, có thể hữu ích khi sử dụng các tham số bổ sung post-check = 0 và pre-check = 0 trong tham số tiêu đề
Header ("Cache-Control: no-store, no-cache, must-revalidate, post-check = 0, pre-check = 0"); ...
Một số tìm cách cấm lưu vào bộ nhớ đệm của các trang hoặc hình ảnh bằng cách thêm một số ngẫu nhiên (ngẫu nhiên) vào các liên kết làm tham số yêu cầu. Chính xác hơn, đây không phải là một lệnh cấm, mà là một nỗ lực để lừa trình duyệt tải lại trang, vì URL đã được thay đổi:
$ echo = "Liên kết"; $ echo = " ";
Đúng, điều này không phải lúc nào cũng hoạt động và không hoạt động trên tất cả các phiên bản và loại trình duyệt và nó chỉ có thể hữu ích trong trường hợp các liên kết được tạo động.
Kiểm tra xem bộ nhớ đệm có bị tắt không
Bạn có thể kiểm tra xem một trang có được lưu vào bộ nhớ đệm hay không bằng cách thêm thời gian máy chủ tại đó một trang cụ thể được tạo trực tiếp vào mã trang. Thật dễ dàng để thực hiện với PHP
Thời gian tạo trang: ". Ngày (" H: i: s ").""; ?>
Dòng 6 chứa mã ngày ("H: i: s"), hiển thị thời gian máy chủ chính xác mà trang được tạo. Do đó, với mỗi yêu cầu đến trang, với điều kiện bộ nhớ đệm bị tắt hoàn toàn, chúng tôi sẽ luôn thấy thời gian hoàn toàn mới. Tuy nhiên, nếu bộ nhớ đệm được thực hiện, thì với các yêu cầu thường xuyên, trang sẽ chứa cùng một thời điểm.
Tắt bộ nhớ đệm trang bằng Apache .htaccess
Gần đây, tôi đã gặp một trường hợp khi một cuộc trò chuyện trên web đột nhiên ngừng hoạt động trên một trong các cổng. Đúng hơn, nó hoạt động, hoàn toàn không có lỗi, nhưng người dùng chỉ thấy tin nhắn của họ trong đó, mà không thấy tin nhắn của người đối thoại với họ. Trong nỗ lực khắc phục tình hình, tôi phát hiện ra rằng máy chủ lưu trữ đã cập nhật cấu hình máy chủ Apache cùng với proxy bộ nhớ đệm Nginx. Sau đó, tôi đã cố gắng sử dụng gần như tất cả các phương pháp trên để vô hiệu hóa bộ nhớ cache, nhưng không giúp được gì. Hy vọng và nỗ lực cuối cùng đã được quyết định nhờ đến sự trợ giúp của Apache, để cố gắng sử dụng tệp .htaccess.
Bằng cách thêm các cài đặt sau vào tệp .htaccess có trong thư mục tập lệnh trò chuyện web, tôi đã giải quyết được sự cố:
Vì vậy, đối với những người có liên quan đến vấn đề cấm lưu vào bộ nhớ đệm của các trang web, tôi khuyên bạn nên sử dụng phương pháp sử dụng tệp .htaccess của máy chủ Apache. Đúng, điều này cũng sẽ chỉ hoạt động nếu các mô-đun tương ứng được tải và kết nối trên lưu trữ của bạn - mod_expires.so và mod_headers.so. Cho dù chúng được kết nối hay không, bạn có thể đảm bảo khi xem tệp cấu hình Apache, bảng điều khiển trên máy chủ lưu trữ hoặc trong trường hợp nghiêm trọng bằng cách liên hệ với bộ phận hỗ trợ kỹ thuật lưu trữ khi có câu hỏi.
LoadModule expires_module modules / mod_expires.so LoadModule headers_module modules / mod_headers.so AddModule mod_expires.c AddModule mod_headers.c
Nếu bạn đã kết nối các mô-đun này, thì bạn có thể thao tác với bộ nhớ đệm của các tệp riêng lẻ, chẳng hạn như bằng cách thêm các lệnh sau vào .htaccess:
Ngoài ra, bạn có thể chỉ định thời gian giới hạn bộ nhớ đệm, ví dụ:
ExpiresDefault "quyền truy cập cộng với quyền truy cập 1 tháng" # hoặc # ExpiresDefault "cộng với 4 tuần" # hoặc # ExpiresDefault "quyền truy cập" cộng thêm 30 ngày "
Các biến thể chỉ thị này có cùng ý nghĩa và ý nghĩa, và sẽ giới hạn bộ nhớ đệm trong khoảng thời gian 1 tháng. Bạn cũng có thể chỉ định các loại tệp nội dung với ngày hết hạn để lưu vào bộ nhớ đệm hoặc cho biết thời gian sửa đổi chúng:
ExpiresByType text / html "quyền truy cập cộng với 1 tháng 7 ngày 12 giờ" sửa đổi ExpiresByType image / gif "cộng thêm 3 giờ 15 phút"
Đó có lẽ là tất cả cho bây giờ. Tôi hy vọng thông tin sẽ hữu ích cho bạn. Nếu bạn có những phát triển, bổ sung của riêng mình, thì đừng ngần ngại, hãy viết chúng trong phần bình luận hoặc gửi cho tôi qua đường bưu điện, và tôi sẽ bổ sung (sau khi kiểm tra) vào bài viết này.