Điểm:0

Bộ nhớ đệm Apache bị vô hiệu hóa khi máy khách gửi tiêu đề If-Modified-Since

lá cờ li

Tôi đang cố gắng để Apache lưu vào bộ đệm các kết quả từ việc chạy tập lệnh PHP đắt tiền (nó truy cập máy chủ bên thứ ba có giới hạn tốc độ) nhưng có vẻ như nếu máy khách gửi Nếu-Đã sửa đổi-Từ khi tiêu đề bộ đệm được bỏ qua.

CacheEnable đĩa /script.php
CacheLock bật
CacheLockMaxTuổi 60
CacheIgnoreHeaders Set-Cookie
# ngăn ứng dụng khách yêu cầu nội dung không được lưu trong bộ nhớ cache một cách rõ ràng
CacheIgnoreCacheControl bật
CacheDetailHeader bật

Tập lệnh php đặt các tiêu đề sau trong phản hồi của nó:

  • Sửa đổi lần cuối đặt thành thời điểm hiện tại, ví dụ: CN, ngày 20 tháng 6 năm 2021 11:30:20 GMT
  • hết hạn đặt thành thời gian hiện tại cộng với 60 giây, ví dụ: CN, ngày 20 tháng 6 năm 2021 11:31:20 GMT

Nếu tôi đưa ra yêu cầu sau:

NHẬN /script.php HTTP/1.1
Máy chủ: example.com
Kết nối: đóng

Sau đó, bộ nhớ đệm hoạt động chính xác và tập lệnh php chỉ chạy mỗi phút một lần với các yêu cầu khác được phục vụ từ bộ đệm.

Tuy nhiên đưa ra yêu cầu sau:

NHẬN /script.php HTTP/1.1
Máy chủ: example.com
Kết nối: đóng
Nếu-Đã sửa đổi-Kể từ: CN, ngày 20 tháng 6 năm 2021 11:30:30 GMT

Chạy tập lệnh php mọi lúc với:

X-Cache-Chi tiết: "lỡ bộ đệm: cố gắng lưu thực thể" từ example.com

trong phản hồi.

Tôi đang sử dụng Apache 2.4.29 trên Ubuntu 18.04.

lá cờ no
Bạn có thể thử đặt hai tiêu đề không? `"CacheIgnoreNoLastMod On"` và `"CacheIgnoreHeaders If-Modified-Since"`
lá cờ li
@SreerajKarichery không có thay đổi nào từ việc đặt các cài đặt đó trong mod_cache
djdomi avatar
lá cờ za
có thể có cơ hội sử dụng ` Tiêu đề không được đặt Sửa đổi lần cuối Tiêu đề không được đặt Nếu-Đã sửa đổi-Từ khi ` hoặc tương tự
lá cờ li
@djdomi không, không thay đổi. Tôi nghĩ rằng tôi đã thử rồi, tôi không chắc các tiêu đề đã bị xóa trước khi mod_cache nhìn thấy chúng
djdomi avatar
lá cờ za
đó là lý do tại sao bạn nên cố gắng loại bỏ nó :)
djdomi avatar
lá cờ za
Nhân tiện, tôi thấy có thể có một số điểm gây khó khăn cho bạn: https://stackoverflow.com/questions/10847157/handling-if-modified-since-header-in-a-php-script
Điểm:0
lá cờ za

Hướng dẫn Mod-Cache từ Apache.org

https://httpd.Apache.org/docs/2.4/mod/mod_cache.html

Sử dụng Nhật ký tùy chỉnh để xác định sự cố

CustomLog "cached-requests.log" phổ biến env=cache-hit
CustomLog "uncached-requests.log" phổ biến env=cache-miss
CustomLog "revalidated-requests.log" phổ biến env=cache-revalidate
CustomLog "invalidated-requests.log" phổ biến env=cache-invalidate

Kích hoạt tiêu đề X-Cache-Detail

CacheDetailHeader bật

Đặt để bỏ qua các chuỗi kiểm soát bộ đệm truy vấn

CacheBỏ qua CacheControl Bật
CacheIgnoreQueryString bật

Việc sử dụng mã thông báo Phiên như url.com/my.php?jsessionid=123 không được lưu vào bộ đệm hoặc thậm chí riêng biệt

CacheIgnoreURLSessionIdentifier jsessenionid

Sử dụng hệ số sửa đổi TỐI THIỂU, yêu cầu chưa lưu trong bộ nhớ đệm đó sẽ được gửi 0,0 = 0% hoặc 1,0 = 100%

CacheLastModifiedFactor 0,99

Đặt thời gian tối thiểu cho bộ nhớ đệm hợp lệ (Mặc định 0)

CacheMinExpire 3600

Xóa Tiêu đề if-Modfied trước khi nó có tác dụng

Tiêu đề không được đặt Sửa đổi lần cuối 
* Cũng có thể được sử dụng trong htaccess

Điều này ban đầu là để gỡ lỗi nhiều hơn vì nó sẽ không phù hợp với Nhận xét nhưng sẽ giúp Inc nâng cao Bộ nhớ đệm của bất kỳ Đối tượng nào.

lá cờ li
`CacheDetailHeader` đã được bật. `CacheIgnoreCacheControl` đã được bật. `CacheIgnoreQueryString` là điều không mong muốn vì chuỗi truy vấn thay đổi kết quả trả về. `CacheIgnoreURLSessionIdentifiers` sẽ không thay đổi bất cứ điều gì vì không có ID phiên trong URL. `CacheLastModifiedFactor` và `CacheMinExpire` chỉ áp dụng khi `Expires` không được chỉ định. `Header unset` dường như không ảnh hưởng đến hành vi của `mod_cache`
djdomi avatar
lá cờ za
Có một cách thứ hai nhưng hơi khó hiểu hơn, sử dụng Nginx trước Apache, nó có nhiều quyền kiểm soát hơn đối với bộ nhớ đệm.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.