當前位置:首頁 » 硬碟大全 » 伺服器清除客戶端靜態資源緩存
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

伺服器清除客戶端靜態資源緩存

發布時間: 2023-08-17 15:33:48

㈠ Tomcat伺服器如何清理緩存

  • 打開tomcat服務安裝目錄,可以看到所有的相關文件目錄

㈡ springmvc 怎麼清除前台靜態資源緩存

讓靜態資源不被SpringMVC分配器過濾有兩種辦法:
① 把所有的 JS 和 CSS 文件移至別的文件夾
② 為 resources 文件夾需要被過濾的文件類型分別寫一個 mapping

第二種方法是在web.xml配置靜態資源映射到default去吧。
第一種方法意思是,比如之前的目錄結構是把css,js放在webroot下的resources文件夾中,頁面上通過 這樣的請求來訪問

㈢ 如何清除DNS伺服器緩存

body{
line-height:200%;font-size:14px;
}
如何清除DNS伺服器緩存
有些時候,DNS伺服器的配置與運行都正確,但DNS客戶機還是無法理喻DNS伺服器實現域名解析。造成這個問題的原因可能是DNS客戶機或DNS伺服器的緩存中有不正確或過時信息,這時需要
清除DNS客戶機或DNS伺服器的緩存信息。清除方法如下。
①對於DNS伺服器的緩存的清除,可以在DNS控制台中,右擊DNS伺服器圖標,在彈出的快捷菜單中選擇【清除緩存】命令,如圖3-42所示。
②對於DNS客戶機的緩存的清除,可在命令行窗口中,在DOS提示符後執行“ipconfig/flushdns”命令,如圖3-43所示。

㈣ 伺服器怎麼清理緩存

當域名解析有問題時,可能是DNS伺服器更新了此域名的IP,而與本地DNS緩存中存儲的信息對應不上,從而造成域名解析有問題,此時就需要更新本地的DNS本地緩存,簡單地清除本地的DNS本地緩存就行了。

1、在運行中輸入cmd,然後輸入ipconfig /flushdns即可。

2、將系統服務中的DNS CLIENT服務停止,可以不在本地存儲DNS查詢信息。

3、關閉IE,然後清除歷史記錄或restart機器。

三種方法均可立即正確解析域名。在用戶間共享ODBC連接Windows 2000支持開放資料庫連接(ODBC),一個由微軟開發的標准機制,它能夠使客戶不用在本地安裝DBMS就可以訪問由各種資料庫管理系統創建的資料庫。

㈤ 緩存靜態資源,不知怎麼解決

之前看過apach及nginx對於靜態資源(含js,圖片,css等)部分的緩存,用於加速並減輕後台實際web伺服器的壓力。
靜態資源緩存是WEB伺服器優化的一種手段,基本原理如下:
1.客戶端瀏覽器請求伺服器一個服務(該服務含有圖片,js等靜態資源),通常會對於每一個網頁中的獨立圖片或js文件發送一個http請求
2.WEB伺服器對於每個資源HTTP請求進行解析,並生成一個資源修改時間的唯一值(可以是etag或last_modified參數),放入伺服器端map,key為資源url,value為資源修改時間。最後將此資源修改時間的唯一值包含在http頭上返回,因為是首次請求,所以會將所有內容放在http body中一並返回給客戶瀏覽器端
3.客戶瀏覽器接收服伺服器響應,並將伺服器返回的資源修改時間作為key放入瀏覽器客戶端,value為http body中的實際資源內容
4.客戶瀏覽器再次請求靜態資源時,會將資源修改時間一並發送給伺服器
5.服務端會從最新的map中取出該資源url對應的修改時間,如果值晚於客戶端請求的資源修改時間,這時會返回最新的已經修改過的資源給客戶端。否則返回304 not modifed

這里記錄資源修改時間的方式有etag及last_modified。最先有的是last_modified,它的工作方式就是上述介紹的,但缺點是只能精確到秒級別。也就是說當你在一秒中修改資源兩次,而客戶端拿到的是第一次修改,那之後就算客戶端第二次再次請求也不會拿到最新的資源。
而etag的出現正是為了解決last_modified的秒級問題,於http 1.1被提出。

今天測試了下,在沒有nginx等前端反向代理伺服器時,tomcat竟然默認對靜態資源做了緩存。
tomcat默認運用etag及last_modifed。etag與if_no_match(客戶端瀏覽器上傳時在http head中應該放的屬性名)一起使用,last_modified與If-Modified-Since一起使用。

客戶端首次請求時,得到請求響應數據如下:

GET http://localhost:8080/webTest/jsp/index.jsp [HTTP/1.1 200 OK 1ms]
GET http://localhost:8080/webTest/js/hello.js [HTTP/1.1 200 OK 1ms]
GET http://localhost:8080/webTest/img/a.jpg [HTTP/1.1 200 OK 2ms]
我們看一下Hello.js這個請求響應具體信息:
server Apache-Coyote/1.1 (表明伺服器是tomcat)
Last-Modified: Sun, 11 May 2014 10:54:33 GMT
Etag: W/"175-1399805673000"
Date: Sun, 11 May 2014 10:59:23 GMT
Content-Type: application/javascript;charset=UTF-8
Content-Length: 175
Accept-Ranges: bytes

從上面可以看到tomcat即返回了last_modified也返回了etag。

客戶端再次請求時,請求數據如下:
If-None-Match: W/"175-1399805673000"
If-Modified-Since: Sun, 11 May 2014 10:54:33 GMT
響應如下:

GET http://localhost:8080/webTest/jsp/index.jsp [HTTP/1.1 200 OK 1ms]
GET http://localhost:8080/webTest/js/hello.js [HTTP/1.1 304 Not Modified 1ms]
GET http://localhost:8080/webTest/img/a.jpg [HTTP/1.1 304 Not Modified 1ms]
從中我們可以看到tomcat對於靜態數據作了緩存。

接著我們分析tomcat對於這部分靜態緩存的判斷處理,這部分邏輯是寫在DefaultServlet類中,
我們可以在doGet方法中進入ServiceContext方法中找到以下源碼:
// Check if the conditions specified in the optional If headers are
// satisfied.
if (cacheEntry.context == null) {

// Checking If headers
boolean included =
(request.getAttribute(Globals.INCLUDE_CONTEXT_PATH_ATTR) != null);
if (!included
&& !checkIfHeaders(request, response, cacheEntry.attributes)) { //這句判斷是否需要返回整個資源請求
return;
}

}
上面源碼的 if (!included
&& !checkIfHeaders(request, response, cacheEntry.attributes))
用於判斷是否需要返回整個資源,如果indcluded與checkIfHeaders方法返回的都是false,這時就直接返回,說明資源未修改,或者是緩存不支持的請求方式。
我們接著查看checkIfHeaders方法:
/**
* Check if the conditions specified in the optional If headers are
* satisfied.
*
* @param request The servlet request we are processing
* @param response The servlet response we are creating
* @param resourceAttributes The resource information
* @return boolean true if the resource meets all the specified conditions,
* and false if any of the conditions is not satisfied, in which case
* request processing is stopped
*/
protected boolean checkIfHeaders(HttpServletRequest request,
HttpServletResponse response,
ResourceAttributes resourceAttributes)
throws IOException {

return checkIfMatch(request, response, resourceAttributes)
&& checkIfModifiedSince(request, response, resourceAttributes)
&& checkIfNoneMatch(request, response, resourceAttributes)
&& checkIfUnmodifiedSince(request, response, resourceAttributes);

}

可以看到tomcat只有當這四個屬性全部返回true(也就是說全部認為資源已經改變)才會返回true,這樣最終會將整個資源(最新修改過的)返回客戶端。
在這里,我們從上面實際過程當中看到,瀏覽器第二次請求資源時在http請求header中放了
If-None-Match: W/"175-1399805673000"
If-Modified-Since: Sun, 11 May 2014 10:54:33 GMT
這兩個屬性。
因此我們查看
&& checkIfModifiedSince(request, response, resourceAttributes)
&& checkIfNoneMatch(request, response, resourceAttributes)
這兩個方法
checkIfModifiedSince源碼如下:
/**
* Check if the if-modified-since condition is satisfied.
*
* @param request The servlet request we are processing
* @param response The servlet response we are creating
* @param resourceInfo File object
* @return boolean true if the resource meets the specified condition,
* and false if the condition is not satisfied, in which case request
* processing is stopped
*/
protected boolean checkIfModifiedSince(HttpServletRequest request,
HttpServletResponse response,
ResourceAttributes resourceAttributes) {
try {
long headerValue = request.getDateHeader("If-Modified-Since");
long lastModified = resourceAttributes.getLastModified();
if (headerValue != -1) {

// If an If-None-Match header has been specified, if modified since
// is ignored.
if ((request.getHeader("If-None-Match") == null)
&& (lastModified < headerValue + 1000)) {
// The entity has not been modified since the date
// specified by the client. This is not an error case.
response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
response.setHeader("ETag", resourceAttributes.getETag());

return false;
}
}
} catch (IllegalArgumentException illegalArgument) {
return true;
}
return true;

}
源碼中可以看到:
if ((request.getHeader("If-None-Match") == null)
&& (lastModified < headerValue + 1000)) {
這句話表明只有在客戶端瀏覽器發送的請求頭中不包含If-None-Match,IfModifiedSince才會生效。
我們接著看checkIfNoneMatch,源碼如下:
/**
* Check if the if-none-match condition is satisfied.
*
* @param request The servlet request we are processing
* @param response The servlet response we are creating
* @param resourceInfo File object
* @return boolean true if the resource meets the specified condition,
* and false if the condition is not satisfied, in which case request
* processing is stopped
*/
protected boolean checkIfNoneMatch(HttpServletRequest request,
HttpServletResponse response,
ResourceAttributes resourceAttributes)
throws IOException {

String eTag = resourceAttributes.getETag();
String headerValue = request.getHeader("If-None-Match");
if (headerValue != null) {

boolean conditionSatisfied = false;

if (!headerValue.equals("*")) {

StringTokenizer commaTokenizer =
new StringTokenizer(headerValue, ",");

while (!conditionSatisfied && commaTokenizer.hasMoreTokens()) {
String currentToken = commaTokenizer.nextToken();
if (currentToken.trim().equals(eTag))
conditionSatisfied = true;
}

} else {
conditionSatisfied = true;
}

if (conditionSatisfied) {

// For GET and HEAD, we should respond with
// 304 Not Modified.
// For every other method, 412 Precondition Failed is sent
// back.
if ( ("GET".equals(request.getMethod()))
|| ("HEAD".equals(request.getMethod())) ) {
response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
response.setHeader("ETag", eTag);

return false;
}
response.sendError(HttpServletResponse.SC_PRECONDITION_FAILED);
return false;
}
}
return true;

}
這里:
String eTag = resourceAttributes.getETag();
String headerValue = request.getHeader("If-None-Match");
這兩句比較簡單,就是分別從伺服器緩存和http請求頭中中取出etag。
接著判斷這兩個etag如果相等,則conditionSatisfied為true,會執行到以下語句:
if (conditionSatisfied) {

// For GET and HEAD, we should respond with
// 304 Not Modified.
// For every other method, 412 Precondition Failed is sent
// back.
if ( ("GET".equals(request.getMethod()))
|| ("HEAD".equals(request.getMethod())) ) {
response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
response.setHeader("ETag", eTag);

return false;
}
response.sendError(HttpServletResponse.SC_PRECONDITION_FAILED);
return false;
}
這段語句中可以發現,如果資源未改變的情況下,並且請求方式為GET或者HEAD時,會返回304狀態碼。否則返回一個412狀態碼,同樣不會返回資源內容。
如果上述最終
if ((request.getHeader("If-None-Match") == null)
&& (lastModified < headerValue + 1000))
條件不成立,即資源更新了或者是第一次請求,這里會讀取當前請求資源文件,並最終放入http響應中。

㈥ 如何清除JSP服務端的緩存

你的 容器 例如 tomcat有個緩存文件夾,刪除就好了
進入tomcat根目錄,找如下路徑
work/catalina/
刪除這個文件夾下的所有東西
其次,還應當把部署到tomcat下的項目刪除掉
方法,返回根目錄,找如下路徑
/webapps/
將項目文件刪除即可

㈦ 伺服器上C盤滿了,如何清除緩存的解決辦法

1、運用磁碟清理軟體清理C盤,大約可為C盤釋放50M-800M空間。

2、關閉休眠功能,在開始菜單的運行里輸入powercfg -h off 指令,關閉休眠,此文件實際大小和物理內存是一樣的,大約可以為C盤釋放1-3G的空間。

3、設置虛擬內存: 計算機屬性>高級系統設置>設置(性能)>高級選項卡>更改(虛擬內存),將C盤設置為無分頁文件,然後把D盤設置成系統管理的大小即可,更改後只有按「設置」按鈕才能生效,最後重啟便完成了設置,此文件默認為物理內存的1.5倍,大約可為C盤釋放2-4G的空間。

4、刪除自動備份文件,運行cmd程序(在「開始–>程序–>附件」中),滑鼠右鍵選擇「以管理員身份運行」;然後,命令行輸入rd/S/Q c:WINDOWS.OLD,提示確認是否刪除目標文件夾,輸入y然後回車即可。WINDOWS.OLD為系統的備份文件,時間越久就越大,超過10G都是很正常的。大約可為C盤釋放3G以上空間。

5、在電腦管家主界面上點擊「清理垃圾」,確認相關垃圾類型被勾選後,點擊「開始掃描」,然後點擊「立即清理」,如果有需要確認才能清理的垃圾,會您確認後再進行深度清理,以實現快速、安全地清理掉電腦中的垃圾文件。

㈧ 怎樣 清除伺服器緩存

登陸伺服器,重新啟動應用服務(如IIS、TomCat或JBOSS等)。