瀏覽器緩存資源文件的問題
最近自己在做一個網站,由于需要改動css文件,發現修改之后,頁面沒有發生變化。于是就用chrome瀏覽器開發工具去看對應的樣式,發現和修改之前的一樣。沒有發生變化,初步懷疑瀏覽器緩存了資源文件,清空chorme瀏覽器之后,發現問題解決了,頁面和預期的一樣。
為了確認這種情況,想跟蹤apache 請求處理情況,也打開了 apache的訪問日志,在httpd.conf文件里面打開了apache的訪問日志
CustomLog "/Applications/MAMP/logs/apache_access.log" common
在第一次打開頁面的時候,access.log 會受到兩個http請求
第一個請求是index.php ,第二個請求是default.css
而進行第二次訪問index.php的時候,apache只接受了第一個請求index.php,瀏覽器沒有發起第二個請求。根據http協議,應該是第一次請求css文件的時候,apache告訴瀏覽器緩存資源文件,所以第二次就直接使用本地緩存,當清空本地緩存之后,就必須重新請求資源文件。
考慮到不能靠這種方式來進行調試css,否則效率太低了一點。我的程序是基于LAMP架構的,開發平臺是MAC OS X10.8 。由apache接收請求,如果發現后綴是php,則通過php模塊來處理。由于資源文件時靜態文件,這個和apache自身的緩存設置有關,就搜索apache的緩存設置。
apache緩存設置是通過在config模塊里面設置,通過設置httpd.conf文件里面的expires_module模塊來來進行實現
LoadModule expires_module modules/mod_expires.so
這個mod_expires功能主要是在response 頭部里面添加 Cache-Control 頭部的 max-age 值,這個值就是設置緩存的失效時間。
第一個想法就是把 expires_module 模塊關閉掉,也就是注釋掉,不讓生成這個頭部。
于是重啟apache,再次進行調試,第一次訪問頁面和第二次訪問頁面就一樣了,瀏覽器都會重新請求css資源文件。
如果在windows平臺,ie有一個選項設置:每次訪問此頁時檢查——就會表示瀏覽器每次訪問一個頁面時,不管瀏覽器是否緩存過此頁面,都要向服務器發出訪問請求
不過chorme里面沒有這個功能,只能通過修改apache來實現了,如果在windows平臺,只需要設置ie內容選項即可。
浙公網安備 33010602011771號