1. 程式人生 > >前端開發緩存問題的解決方案

前端開發緩存問題的解決方案

col 功能 設置 影響 DG css dev 使用 head

在沒有使用vue angular react 三大流行框架去開發靜態的項目時,困擾我們最多的就是緩存問題,沒有三大框架的優勢之熱刷新功能,如何做到我們修改了我們引用的外部文件裏的某些內容,回到頁面,刷新一下就能看到最新的效果或是樣式呢?說的直白點就是動態的給文件加版本號,在沒有接觸php我是不知道如何用js去控制,為了安全,前端不具有改寫文件的能力,我就想到了同樣可以嵌套html內容的php語言,作為一個前端,懂點後端語言真的沒壞事,不說廢話了,上代碼.

第一步:項目下面一定得有一個 控制版本的php文件,version.php,內容如下:

 1 <?php
 2 /**
 3  * 
4 * @authors shufei 5 * @date 2018-06-17 12:15:27 6 * @version $ver strtotime(date(‘Y-m-d H:i:s‘)) 7 */ 8 function AutoVersion( $file ) { 9 $ver = strtotime(date(‘Y-m-d H:i:s‘)) ; 10 echo $file .‘?t=‘ .$ver; 11 }

這個 AutoVersion 方法需要一個參數也是文件的file路徑 $file,版本號 $ver 賦值為實時的時間戳,當你項目的部分開發完成後可以設置 $ver為固定的一個值

第二步:將開發的html頁面改為php頁面,index.php

 1 <?php require_once "version.php";?>
 2 <!DOCTYPE html>  
 3 <html>  
 4 <head>  
 5     <meta charset="utf-8">  
 6     <meta http-equiv="X-UA-Compatible" content="IE=edge">  
 7     <meta name="viewport" content="width=device-width, initial-scale=1">  
 8
<meta name="Generator" content="EditPlus?"> 9 <meta name="Author" content=""> 10 <meta name="Keywords" content=""> 11 <meta name="Description" content=""> 12 <title>Document</title> 13 <link href="<?php AutoVersion(‘test.css‘); ?>" rel="stylesheet" type="text/css" > 14 <script src="<?php AutoVersion(‘test.js‘); ?>"></script> 15 </link> 16 </head> 17 <body> 18 <h1>Hello,world!</h1> 19 </body> 20 </html>
<?php require_once "version.php";?>表示依賴 version.php文件,因此 <?php AutoVersion(‘test.css‘); ?>和<?php AutoVersion(‘test.js‘); ?>都會被替換成原有的文件路徑
加版本號,如果 version.php 裏的$ver是實時時間戳,那麽test.js 或者 test.css文件裏有任何修改,刷新一下都是最新的,沒有緩存顧慮,再也不用手動的去耗時耗力的操作每個文件夾了

如果你還想要熱刷新那種差不多的功能,哪就在你的開發頁面index.php裏head裏加上 <meta http-equiv="refresh" content="3"> ,頁面3秒自動刷新一次,同時文件也是最新的,css或js裏的代碼
一旦被修改頁面自動刷新展示最新的頁面和效果,缺點嘛,你懂得,就是需要看dom結構,3秒一刷新,控制臺element裏看dom結構就重置了,是不是心想算了,還是不偷懶了,自己手動刷新一次又怎麽了,不影響你
的美麗動容

個人摸索出來的方法,沒有接觸PHP,如有問題請留言

前端開發緩存問題的解決方案