Điểm:1

RewriteRule với cờ [L] dừng lưu vào bộ nhớ đệm?

lá cờ cn

Tôi sử dụng phần mềm quản lý máy chủ plesk với apache và nginx. Tôi đã đặt trong apache và nginx một tiêu đề đã hết hạn cho các tệp javascript trong một năm. Điều đó đang làm việc.Tôi có thể thấy một năm cho "hết hạn" trong tiêu đề.

Bây giờ tôi muốn truy cập các tệp javascript và php bằng cách viết lại (không chuyển hướng).

APACHE

ExpiresActive On
ExpiresByType văn bản/javascript A31556952

Viết LạiEngine Trên
RewriteRule fake/(.+\.(?:js|php))$ original/$1 [L]

NGINX

vị trí ~* ^/(.*\.js)$ {
    try_files $uri @fallback;

    hết hạn 1 năm;
    add_header Kiểm soát bộ đệm "công khai";
}

RewriteRule đó đang hoạt động. Tôi có thể truy cập tệp này, nhưng tiêu đề "hết hạn" trong "fake/file.js" đã biến mất. Tôi đang làm gì sai?

example.com/original/file.js = hết hạn sau một năm

example.com/fake/file.js = không có tiêu đề nào hết hạn

GIẢI PHÁP Tất cả các tệp tĩnh thường được xử lý bởi NGINX, không phải apache. Vì vậy, hãy đặt trong apache dòng này cho javascript để tạo bộ đệm cho nó.

Bộ tiêu đề Kiểm soát bộ đệm "max-age=31556952, public"

Cờ [L] trong RewriteRule phải dừng xử lý tệp tĩnh bằng nginx và ExpiresByType bị bỏ qua.

lá cờ kz
Chính xác thì bạn đang đặt tiêu đề `Hết hạn` như thế nào? Bạn đang sử dụng các chỉ thị này ở đâu? Bạn có những chỉ thị nào khác? "trong apache **và** nginx" - Nginx phù hợp với điều này như thế nào? (Ngoài ra: Tất cả các trình duyệt hiện đại đều sử dụng tiêu đề `Cache-Control` + `max-age` trên tiêu đề `Expires`.)
lá cờ cn
Cảm ơn, tôi đã chỉnh sửa câu hỏi của mình. Cache-Control đang hoạt động, nhưng tại sao ExpiresByType không hoạt động và tại sao các tệp tĩnh không được nginx xử lý?
Điểm:1
lá cờ kz

tại sao các tệp tĩnh không được nginx xử lý?

Bởi vì /giả/file.js không còn là "tệp tĩnh" (tệp không tồn tại), do đó được chuyển qua Apache, nơi tệp được viết lại bên trong để nhận phản hồi cần thiết.

ExpiresByType văn bản/javascript A31556952

văn bản/javascript có thể không phải là loại mime "chính xác" cho các phản hồi JavaScript trên máy chủ của bạn. Bạn cần xác nhận loại mime nào (tức là. Loại nội dung tiêu đề), máy chủ của bạn đang gửi lại những phản hồi này, nhưng điều này thường là ứng dụng/javascript thay vào đó những ngày này. Nói cách khác:

Hết hạnByType ứng dụng/javascript A31556952

Để làm rõ, mod_expires hết hạnByType đặt cả hai hết hạn Kiểm soát bộ đệm: tuổi tối đa Tiêu đề phản hồi HTTP. Kiểm soát bộ đệm: tuổi tối đa được ưu tiên trên tất cả các trình duyệt hiện đại. hết hạn thực sự chỉ dành cho hỗ trợ kế thừa.

Cờ [L] trong RewriteRule phải dừng quá trình xử lý tệp tĩnh bằng nginx

Các l cờ chỉ đơn giản là dừng quá trình hiện tại của công cụ viết lại trên Apache. Bản thân các chỉ thị này không ảnh hưởng đến Nginx (nginx dường như hoạt động như một proxy giao diện người dùng).

Đă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.