使用時間戳引入css、js文件
前言
最近在一家創業公司實習,主要負責新版官網和商家平台管理系統的前端開發和維護,每次測試都要上傳文件到ftp服務器端測試,初期由於更新修改比較頻繁,每次都是直接上傳覆蓋css、js、php文件,鏈接方式是普通的鏈接而沒有添加時間戳。由於大多數服務器端或CDN都會對css、js和圖片這些靜態的內容設置緩存和gzip壓縮,到了IE這里又會在本地做一個緩存。所以當我們在服務器端更新了css、js文件之后,客戶端經常會出現沒有更新的現象,即瀏覽器會緩存你網站之前css、js的一些版本,導致一些問題的出現。
ps:並且我們不會要求客戶每次訪問你的網站都要清除下緩存,刷新一下頁面。所以為了得到服務器端最新版的靜態內容,在引入相關css、js文件時就有必要使用時間戳了。(格式大概是:xxx.css?t=aaa或xxx.js?t=bbb)如淘寶首頁源碼:
使用
這些時間戳標志着修改css、js等文件的日期,並且是動態生成的,可以在后台使用php或其他語言獲取,然后前台輸出。這樣服務器端每次修改,瀏覽器端都會得到同步更新,用戶訪問網站時不會導致相關問題出題。
php對時間戳的操作:
一、php獲取時間戳方法有兩個:time()、strtotime()。
這兩個方法,都可以獲取php中unix時間戳,time()為直接獲取得到,strtotime($time, $now)為將時間格式轉為時間戳,$time為必填。由於對php不是很熟悉,詳情請看strtotime的用法 ,如下(注:該段代碼是從網上copy的)
//獲得時間戳 <?php $timestamp = time(); echo $timestamp; ?> //更新timestamp的SQL的語句: update 表名 set 字段名= $timestamp where 條件=值;
二、另外使用鈎子修改css、js的url的php方法可參考:使用php給css和js加上時間戳
結語
總之一句話概括使用時間戳的目的就是:禁止緩存css、js,使瀏覽器同步更新到服務器端最新的靜態內容。由於本人技術很菜,這里只是把一些遇到的問題擺出來,好讓看到的人有這個意識,避免犯同樣的錯誤,相關解決方案因人各異。