征服快取引發的難題
如何平衡的使用瀏覽器快取?平時我們藉助快取來減少使用者載入頁面檔案(比如js,css,image等)的時間和頻寬,同時我們要確保使用者訪問的上述檔案時最新的。而後者是我們常常頭疼的問題。
本文主要介紹一些小的技巧來確保在網站檔案被快取的同時,又可以得到良好的效能和最新的更新的網站內容。
問題描述
比如我們在某頁面載入了css檔案,
如何優化頁面訪問的效能呢?
手段1、使用快取。通常我們希望此檔案被瀏覽器快取一定的時間,這樣可以使用者訪問此頁面的時候不必每次都向伺服器請求下載此檔案。我們也可以配置伺服器在頁面新增”Expires”頭資訊,從而告訴瀏覽器快取此檔案的時間。
手段2、我們使用yuicompressor等壓縮工具對css檔案進行壓縮,減小檔案的大小。
問題是當因版面風格的更新,此css已經做了更新,但是使用者可能仍然使用的是舊的頁面主題,甚至錯亂的頁面。這樣對使用者的體驗非常不好。
解決之道:
根本原理:欺騙瀏覽器,讓它認為它載入的檔案跟快取的檔案不一樣。
方法一、修改檔名
方法二、增加Query string
方法三、修改引用檔案路徑
這裡最好的是在伺服器配置檔案中進行配置來實現檔案路徑對映(url
mapping)。
以上我們以css為例進行了說明,我們來看看圖片和js檔案。
Images
由於圖片的引用一般寫在css檔案中,並採用相對路徑,所以當css的引用路徑發生變化的時候,根據重寫規則,圖片被解析的路徑自然會同步發生更新。
JS
適用於css的方法同樣都適用於JS。
結束語
當然web站點效能的優化,除了快取之外,還有許多的方法。比如我們可以藉助YSlow來幫助使用者得到最好的體驗。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-618176/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mybatis 一級快取和引發的問題MyBatis快取
- mybatis一級快取(session cache)引發的問題MyBatis快取Session
- 快取問題(一) 快取穿透、快取雪崩、快取併發 核心概念快取穿透
- Nginx 快取引發的跨域慘案Nginx快取跨域
- 快取問題(四) 快取穿透、快取雪崩、快取併發 解決案例快取穿透
- 詳解NSURLCache快取引發的安全漏洞快取
- 一次 DNS 快取引發的慘案DNS快取
- 一次dns快取引發的慘案DNS快取
- Redis快取穿透、快取雪崩、redis併發問題分析Redis快取穿透
- Mata解決了快取何時失效的世紀難題? - Lu快取
- 快取的問題快取
- 高併發快取面臨的問題快取
- 快取同步的問題快取
- mybatis二級快取引數MyBatis快取
- 程式疑難雜症之1快取快取
- 快取專題:HTML5離線快取與HTTP快取快取HTMLHTTP
- 由春節回家難引發的思考
- beego快取問題Go快取
- SOAP快取問題快取
- Redis 面試常見問題———快取雪崩、快取擊穿以及快取穿透Redis面試快取穿透
- Java高併發快取架構,快取雪崩、快取穿透之謎Java快取架構穿透
- 快取 Laravel 模型的小問題快取Laravel模型
- 關於JdonFramework的快取問題Framework快取
- [奇技Y巧]解決程式快取鎖命名困難,命名衝突問題快取
- 快取和併發快取
- MySQL查詢快取引數詳解MySql快取
- 程式碼解決快取穿透和快取雪崩問題快取穿透
- 電腦CPU二級快取的開啟方法和如何檢視二級快取的引數快取
- Redis的快取穿透、快取雪崩、快取擊穿的區別Redis快取穿透
- 一道“史上最難”java面試題引發的執行緒安全思考Java面試題執行緒
- jquery ajax請教的快取問題jQuery快取
- nginx DNS 解析快取的更新問題NginxDNS快取
- Hibernate中的Session快取問題Session快取
- jdon框架的aop和快取問題框架快取
- 關於 Hibernate快取的問題快取
- 請教關於快取的問題快取
- 最難「討好」的消費者,竟然都被AIGC征服了?AIGC
- 高併發場景下的快取有哪些常見的問題?快取