1. 程式人生 > >頁面的快取與不快取-html,css,js

頁面的快取與不快取-html,css,js

HTML的HTTP協議頭資訊中控制著頁面在幾個地方的快取資訊,包括瀏覽器端,中間快取伺服器端(如:squid等),Web伺服器端。本文討論頭資訊 中帶快取控制資訊的HTML頁面(JSP/Servlet生成好出來的也是HTML頁面)在中間快取伺服器中的快取情況。

HTTP協議中關於快取的資訊頭關鍵字包括Cache-Control(HTTP1.1),Pragma(HTTP1.0),last-Modified,Expires等。

HTTP1.0中通過Pragma 控制頁面快取,可以設定:Pragma或no-cache。網上有非常多的文章說明如何控制不讓瀏覽器或中間快取伺服器快取頁面,通常設定的值為no- cache,不過這個值不這麼保險,通常還加上Expires置為0來達到目的。但是如我們刻意需要瀏覽器或快取伺服器快取住我們的頁面這個值則要設定為 Pragma。

HTTP1.1中啟用Cache-Control 來控制頁面的快取與否,這裡介紹幾個常用的引數:

•no-cache,瀏覽器和快取伺服器都不應該快取頁面資訊;
•public,瀏覽器和快取伺服器都可以快取頁面資訊;
•no-store,請求和響應的資訊都不應該被儲存在對方的磁碟系統中;
•must-revalidate,對於客戶機的每次請求,代理伺服器必須想伺服器驗證快取是否過時;
Last-Modified只頁面的最後生成時間,GMT格式;
Expires過時期限值,GMT格式,指瀏覽器或快取伺服器在該時間點後必須從真正的伺服器中獲取新的頁面資訊;

頁面快取的問題可能大家都遇到過,很多功能做完沒起效果,這裡給出我的使用的解決方法

對於一個html頁面,快取分3部分,一個是頁面內容,一個是css樣式,一個是JS檔案

1、頁面內容

<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">

2、CSS和JS檔案

<link rel="stylesheet" href="../css/register.css"/>
<script src="../scripts/register.js"></script>
改成
<link rel="stylesheet" href="../css/register.css?v=20161020"/>
<script src="../scripts/register.js?v=20161020"></script>

就是隻要在每次修改後改一下版本號即可