2012-03-05 28 views
11

Tôi đang phát triển một trang web đơn giản bằng cách sử dụng PHP.Ngăn chặn lưu vào bộ nhớ cache của tập tin CSS

Cấu hình phát triển: WAMP

Cấu hình

sản xuất: ĐÈN

Trong khi thử nghiệm, tôi đã thay đổi tập tin CSS của tôi, nhưng khi tôi tải lại trang web trình duyệt của tôi (không chắc chắn) vẫn sử dụng được lưu trữ cũ css.

tôi đã làm một số googling và thấy các giải pháp khác nhau mà tôi đã cố gắng

  • Phụ thêm một truy vấn vào cuối css css/main.css?78923
  • Sử dụng Ctrl + R (trong Firefox) để buộc quyến rũ của tài nguyên
  • Vô hiệu hóa bộ nhớ đệm của Firefox cũng như sử dụng tiện ích bổ sung Firefox Clear Cache.

Khi không có cách nào trong số này hoạt động, tôi đã thực hiện một số điều thú vị hơn, nơi tôi gặp một trang ngăn xếp (here) trong đó ai đó đã gợi ý rằng Apache lưu trữ tài nguyên. Vì vậy, vấn đề không phải là với Firefox, nhưng máy chủ. Các chàng trai cũng đề nghị một giải pháp mà tôi không hiểu (tôi là một newbie)

Câu hỏi của tôi có hai phần:

  1. Có đúng là Apache lưu trữ nguồn? (Làm thế nào để kiểm tra xem tôi có làm không?)
  2. Làm thế nào để ngăn chặn nó khỏi bộ nhớ đệm?

PS: sao chép và dán các giải pháp trong đống câu hỏi (một trong đó tôi đã ở trên như một liên kết) đã không làm việc :(

+0

Bạn đang sử dụng một khung công tác PHP hoặc một số CMS hoặc giỏ hàng được tạo trước? –

+0

Khám phá [bookmarklet này] (http://david.dojotoolkit.org/recss.html). Không thực sự những gì bạn đang tìm kiếm, nhưng nó có thể giúp bạn. Nó tải lại CSS của bạn mà không làm mới trang. –

+0

@DavidGallagher Tôi không sử dụng bất kỳ khung công tác PHP nào. Chỉ cần đồng bộ PHP – Ankit

Trả lời

14

Tôi đã chạy qua vấn đề này một vài lần và thường hơn đến các vấn đề trên các trang web sản xuất bằng cách gọi css của tôi như thế này

<link rel="stylesheet" type="text/css" href="style.css?v=1" /> 

Khi bạn tung ra một bản cập nhật chỉ cần thay đổi v=1 để v=2 và nó sẽ buộc tất cả người dùng trình duyệt của bạn lấy các tờ kiểu mới. Điều này cũng sẽ làm việc cho các tệp kịch bản lệnh.Nếu bạn xem nguồn trên Google, bạn sẽ thấy chúng cũng sử dụng cách tiếp cận này.

+0

Cảm ơn! Điều này ngăn cản một dự án của tôi trong nhiều tháng, được đánh giá cao – Timmah

0
  1. Apache (-modules) có thể cache ressources, nhưng đó là Không phải là vấn đề hiện tại của bạn
  2. Hãy tắt trình duyệt của bạn, lưu bộ nhớ cache khi tải lại hoặc phân phối css với tiêu đề đã được sửa đổi.Bạn có thể viết một tập lệnh đặt tiêu đề hết hạn để trình duyệt của bạn phải có phiên bản mới của css của bạn

Dù sao tôi cũng không nhận được điểm trong đó. Để phát triển, cách dễ dàng hơn để vô hiệu hóa trình duyệt của bạn hoặc nhấn Ctrl + r.

8

Tôi đã từng gặp vấn đề tương tự với hệ thống LAMP dev của tôi, do mạng gắn kết. Tôi quản lý để thoát khỏi nó bằng cách thêm hai dòng này để conf apache của tôi.

EnableMMAP off 
EnableSendfile off 
+0

Tôi có thể cài đặt chúng trong môi trường phát triển của mình. Tuy nhiên, máy chủ web của tôi sẽ không cung cấp cho tôi quyền truy cập vào 'apache.conf'. Có cách nào để thiết lập các tham số cục bộ (có thể là trong .htaccess hoặc một cái gì đó như thế). – Ankit

+0

Cập nhật: Nó không hoạt động trên WAMP (ít nhất), máy phát triển của tôi. PS: Trên WAMP, tôi chỉ thấy httpd.conf. Đây có phải là khác nhau từ apache.conf – Ankit

+0

Chúng có thể được đặt trong .htaccess. Vì Apache là một công ty, httpd là tên chính xác cho máy chủ web. apache.conf và httpd.conf nên bằng ngữ nghĩa. – Corubba

0

tôi luôn luôn sử dụng httcacheclean khi thay đổi một cái gì đó trong các tập tin tài sản (js, css, vv)

1

Trong trang php của tôi thường thêm thời gian ngày hiện tại đến cuối href css của bạn:

<link rel="stylesheet" type="text/css" href="style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>" /> 

Tham khảo: Here

1

Tôi biết đây là một câu hỏi cũ, nhưng tôi chỉ gặp vấn đề này và có một số vấn đề tương tự. Đây là cách nhanh chóng để không lưu bộ nhớ cache trên bất kỳ tệp nào:

<link rel="stylesheet" href="css/style.css?<?=time()?>"> 

Sử dụng giúp tải phiên bản mới nhất mỗi khi trang được tải.

Các vấn đề liên quan