Tôi có một trang mà một khi nút được nhấp vào, nó được thay thế bằng trình quay số Ajax trong khi người dùng đợi trang tiếp theo tải.Safari dường như bỏ qua cài đặt bộ nhớ cache khi người dùng truy cập lại bằng chuột hoặc bàn phím
Tôi đang kiểm soát (hoặc cố gắng kiểm soát) bộ nhớ đệm bằng .htaccess. Nếu người dùng truy cập lại (nút trình duyệt, nút chuột, alt + trái, backspace), nó cần phải tải lại trang từ bộ nhớ cache. IEs 6-8 và Chrome đều ổn với điều này. Firefox không hoạt động trong một thời gian và gần đây đã bắt đầu hoạt động, nhưng vấn đề dường như vẫn còn trong Safari. Điều này có vẻ hơi lạ, bởi vì tôi đã mong đợi Safari và Chrome cư xử theo cùng một cách.
Đây là tập tin .htaccess của tôi:
# Add Proper MIME-Type for Favicon
AddType image/x-icon .ico
<IfModule mod_expires.c>
ExpiresActive On
# ExpiresDefault A2630000
ExpiresByType image/x-icon A2630000
ExpiresByType image/gif A2630000
ExpiresByType image/jpeg A2630000
ExpiresByType image/png A2630000
ExpiresByType application/x-javascript M2630000
ExpiresByType application/javascript M2630000
ExpiresByType text/css M2630000
</IfModule>
<IfModule mod_headers.c>
Header set Cache-Control "public"
<FilesMatch "\.php$">
Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0"
</FilesMatch>
</IfModule>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
Tôi đã thử nó có và không có dòng nào Cache-Control.
Tôi cũng đã thử thêm:
AddType application/x-httpd-php .php
với:
ExpiresByType application/x-httpd-php A0
Để vô ích.
Tôi có thiếu thứ gì đó hiển nhiên không?
Chỉnh sửa: Tôi không nghĩ rằng nó liên quan đến cài đặt bộ nhớ cache.
Tôi đã cố gắng thêm này đến PHP bản thân:
#safari test
if (strstr($_SERVER['HTTP_USER_AGENT'],'Safari')){
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
}
Và thậm chí nếu không có những dòng tôi có thể nhìn thấy trong "kiểm tra nguyên tố"> nguồn lực mà các tiêu đề đúng đang được nhận. Vấn đề dường như là những gì Safari đang làm với họ trong nỗ lực của mình để trở thành "trình duyệt nhanh nhất". Nó sẽ xuất hiện mà nó rõ ràng bỏ qua những gì các nhà phát triển trang web cụ thể - điều này nghe giống như suy nghĩ ban đầu của IE từ trở lại trong ngày khi bảng nơi được sử dụng cho bố trí.
Safari sẽ không hành động theo cùng một cách như Chrome về bộ nhớ đệm. Cả hai đều sử dụng cùng một công cụ kết xuất (WebKit), vì vậy họ sẽ hiển thị các trang, chạy tập lệnh, v.v. giống nhau, nhưng bộ nhớ đệm và các công cụ như vậy không được thực hiện bởi WebKit và có thể được Safari và Chrome xử lý khác nhau. – qmega