① 為什麼我不能使用緩存下載視頻了
有以下幾點原因:
1、查看需要離線視頻是否為收費視頻,如果為收費視頻,則需要開通會員才能下載。
2、查看當前離線視頻是否擁有離線資源,如果緩存開關未點亮,則說明此視頻不能緩存。
3、查看手機當前存儲空間是否足夠,當手機存儲空間不夠的話,是不能緩存視頻的。
4、查看手機是否打開流量保護功能,當打開流量保護開關後,如果未處於wifi環境下,是不能緩存視頻的。
② 校園網共享wifi,可以正常瀏覽網頁,下載東西,唯獨不能緩存視頻,歌曲。。。為何莫非緩存和下載在
1.手機存儲空間不足
當手機沒有足夠的存儲空間之後,就不能進行視頻的緩存了,所以可以先查看一下自己手機的存儲空間剩餘。
2.網速不給力
網速不暢通,也會導致視頻緩存失敗的,由於網路不暢,緩存連接就會受到阻礙。通過網速測試即可查看自己網速了。
3.清理優酷Cookie
由於緩存的文件太大,太多了,清理一下cookie也許就能解決好問題了,或者設置一下緩存的視頻清晰度
4.更換版本
有時候可能是因為版本自身的問題,或者此版本與手機不太兼容的問題,可以選擇更換版本或者卸載了重裝一下試試。
③ Http協議中,用於控制緩存的Header有哪些並簡要說明
Last-Modified(伺服器響應) 和 If-Modified-Since(瀏覽器請求)
ETag(伺服器) 和 If-None-Match(瀏覽器)
Expires(伺服器響應傳遞,格林威治格式的一個具體的時間點)
Cache-Control(伺服器建議的緩存策略)
max-age:時間長度。(瀏覽器和共享高速緩存緩存有效的時長)
s-maxage: 時間長度。共享高速緩存的緩存有效時長(瀏覽器不進行緩存)
no-cache:瀏覽器不從緩存讀取,必須請求伺服器。
no-store:不緩存任何請求和響應信息。
public:對任何緩存媒介都可緩存該響應。
private:只允許個體客戶端緩存,不允許共享高速緩存。
可以看這篇文章:網頁鏈接
④ 3MB 三級高速共享緩存 是什麼意思
與CPU交換數據,因此速度很快。L1 Cache(一級緩存)是CPU第一層高速緩存。內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。一般L1緩存的容量通常在32—256KB。L2 Cache(二級緩存)是CPU的第二層高速緩存,分內部和外部兩種晶元。內部的晶元二級緩存運行速度與主頻相同,而外部的二級緩存則只有主頻的一半。L2高速緩存容量也會影響CPU的性 能,原則是越大越好,現在家庭用CPUL2高速緩存最大的是512KB,而伺服器和工作站上用CPU的L2高速緩存更高達1MB-3MB。
⑤ 通過HTTP Header控制緩存
我們經常通過緩存技術來加快網站的訪問速度,從而提升用戶體驗。HTTP協議中也規定了一些和緩存相關的Header,來允許瀏覽器或共享高速緩存緩存資源。這些Header包括:
Last-Modified 和 If-Modified-Since
ETag 和 If-None-Match
Expires
Cache-Control
以上Header又可以分成兩種類型:
協商緩存:瀏覽器發送驗證到伺服器,由伺服器決定是否從緩存中讀取,如 1 和 2 。
強緩存:瀏覽器驗證緩存的有效性,然後決定是否從緩存中讀取數據,如 3 和 4 。
本文將會分別介紹這四種配置的作用以及可能產生的影響。
1、Last-Modified 和 If-Modified-Since
Last-Modified:伺服器在響應請求時,告知瀏覽器資源的最後修改時間。
If-Modified-Since:瀏覽器再次發送請求時,會通過此Header通知伺服器在上次請求時所得到的資源最後修改時間。伺服器會將If-Modified-Since與被請求資源的最後修改時間進行比對。若資源的最後修改時間晚於If-Modified-Since,表示資源已被改動,則響最新的資源,返回200狀態碼;若資源的最後修改時間早於或等於If-Modified-Since,表示瀏覽器端的資源已經是最新版本,響應304狀態碼,通知瀏覽器繼續使用緩存中的資源。
2、ETag 和 If-None-Match
ETag:伺服器分配給資源的唯一標識符,資源被修改後,ETag也會隨之發生變化。
If-None-Match:瀏覽器再次發送請求時,會通過此Header通知伺服器已緩存資源的ETag。伺服器會將If-None-Match與被請求資源的最新ETag進行比對。若不相同,表示資源已被改動,則響應最新的資源,返回200狀態碼;若值相同,則直接響應304狀態碼,通知瀏覽器繼續使用緩存中的資源。
3、Expires
伺服器可以通過此Header向瀏覽器傳遞一個具體的時間(格林威治格式,例如:Thu, 19 Jul 2018 07:43:05 GMT) ,來明確地宣告資源的有效期。在資源過期之前,瀏覽器不再發送請求,而是直接從緩存中讀取數據。只有當資源過期之後,瀏覽器才會再次向伺服器請求該資源。
4、Cache-Control
伺服器使用此Header來向客戶端建議緩存策略,它有一下幾個可選值:
max-age=秒:告知瀏覽器緩存的有效時長,在該時間內瀏覽器將直接從緩存中讀取數據。
s-maxage=秒:作用同max-age,但是只對共享高速緩存(如CDN)有效,對瀏覽器無效。
no-cache:告知瀏覽器不要直接使用緩存,而是必須向伺服器發送請求。
no-store:告知瀏覽器不要緩存本次請求和響應的任何信息。
public:宣告任何緩存媒介都可以緩存該響應。
private:宣告該響應只允許個體客戶端(如瀏覽器)去緩存,而不允許共享高速緩存(如CDN)去緩存。
在上面的介紹中我們了解到瀏覽器會根據max-age設置的時間進行緩存。而通過研究發現CDN也會識別源站響應頭中Cache-Control屬性,根據max-age設置的時間進行緩存,但是,如果源站同時設置了s-maxage和max-age,那麼CDN會優先採用s-maxage。
下面通過圖例來展示一下這些可選值的效果。
首先了解一下瀏覽器是怎樣根據max-age進行緩存的:
從上圖不難發現,伺服器在Header中返回了Cache-Control: max-age=100後,瀏覽器成功緩存100秒,該時間段內的請求都從直接以本地緩存來響應。
那麼,伺服器在Header中返回Cache-Control:s-maxage=100時,又會對瀏覽器產生什麼樣的影響呢?
如上圖所示,瀏覽器沒有採取任何緩存策略,這是因為s-maxage面向的是共享高速緩。
上面這兩個例子很容易理解,在現實世界中,為了加快網站響應速度,我們可能會在瀏覽器和伺服器之間引入CDN服務。瀏覽器的請求會先到達CDN,然後CDN判斷是從緩存中讀取數據還是回源到伺服器。接下來,讓我們看看max-age和s-maxage會對CDN的緩存策略帶來哪些影響。
可以看出CDN也會利用max-age來緩存,所以在100秒內強制刷新瀏覽器時,CDN會直接用緩存來響應。
如果伺服器使用了s-maxage又會如何呢?
不難發現CDN對max-age和s-maxage採取了同樣的緩存策略,但瀏覽器並不會根據s-maxage來進行緩存。
CDN供應商的特殊規則
我們分別測試了阿里雲和騰訊雲的CDN對Cache-Control的支持情況,發現他們都有一些獨特的規則。阿里雲CDN可以在控制台里設置Cache-Control,該設置會覆蓋源伺服器的Cache-Control。
騰訊雲CDN雖然沒有再控制台提供覆蓋Cache-Control的功能,但其規則卻一點也不簡單,在使用的時候一定要特別注意:
伺服器和CDN均不對緩存進行配置時,CDN會採用默認的緩存機制(靜態文件緩存30天,動態請求不緩存);
CDN配置緩存機制(但並未開啟高級緩存配置)且伺服器設置Cache-Control: s-maxage=200,max-age=100時,CDN會按照其控制台設置的規則進行緩存,瀏覽器則按照max-age進行緩存;
伺服器不設置Cache-Control時,CDN會自動在響應的Header中添加Cache-Control: max-age=600,這就會讓瀏覽器將該資源緩存600秒;
伺服器設置為禁用緩存時,CDN和瀏覽器均不進行緩存;
伺服器設置Cache-Control: s-maxage=200,max-age=100並開啟CDN的高級緩存配置時,CDN會從s-maxage和控制台中設置的緩存時間中選擇最小值來作為緩存時間,而瀏覽器則始終使用max-age;
伺服器設置Cache-Control:max-age=100並開啟CDN的高級緩存配置時,CDN會從max-age和控制台中設置的緩存時間中選擇最小值來作為緩存時間,不影響瀏覽器的緩存策略。
組合使用
如果同時設置了這些Header,瀏覽器和高速共享緩存會按照下面的優先順序進行緩存:
Cache-Control > Expires > ETag > Last-Modified
也就是說,Cache-Control不僅是強緩存,而且擁有最高的優先順序,我們可以為不經常發生變化的資源應用該Header來提升響應時間。
在Ada中使用緩存
Ada提供了UI腳手架和API腳手架,這兩類腳手架的伺服器端入口文件分別為index.server.js和index.js,我們只需要在入口文件的請求處理函數中為響應添加適當的Header,即可通知客戶端進行響應的緩存,比如:
// 設置CDN緩存300秒,瀏覽器緩存200秒 ctx.response.headers.set('Cache-Control',public,s-maxage=300,max-age=200)
在為請求添加緩存Header之前,應該先為其制定適當的緩存策略,需要考慮該URL是否適合緩存(數據是否特定於用戶)以及需要緩存的時長等等。
總結
通過使用這些HTTP Header,我們可以主動影響瀏覽器甚至CDN的緩存策略,從而減少請求數量,提升網頁性能,減輕伺服器壓力。
Ada的靈活機制能讓我們為不同的URL設置不同的緩存策略,能夠更有針對性地進行主動緩存。
⑥ 共享存儲區通信有哪些優點使用上有哪些限制
共享存儲區通信的優點有:常用的集中式多處理機使用的通信機制兼容。
限制有:是針對其他通信機制運行效率較低而設計的。往往與其它通信機制,如信號量結合使用,來達到進程間的同步及互斥。
共享存儲是指兩個或多個處理機共用一個主存儲器的並行體系結構。每一個處理機都可以把信息存入主存儲器,或從中取出信息。處理機之間的通信通過訪問共享存儲器來實現。
系統結構
1、無高速緩沖存儲器的集中式
這種結構的處理機沒有高速緩沖存儲器,多個處理機通過交叉開關或多級互聯網路等直接訪問共享存儲器。由於任一存儲單元在系統中只有一個備份,這類系統不存在高速緩沖存儲器一致性問題,系統的可伸縮性受限於交叉開關或多級互聯網路的帶寬。
2、基於高速緩沖存儲器的集中式
在這種結構的系統中,每個處理機都有高速緩沖存儲器,多個處理機一般通過匯流排與存儲器相連。每個處理機的高速緩沖存儲器通過偵聽匯流排來維持數據一致性。
3、具有高速緩沖存儲器一致性的分布式
這種結構稱為高速緩沖存儲器一致的非均勻存儲訪問結構。這類系統的共享存儲器分布於符結點之間。結點之間通過可伸縮性好的互聯網路相連,每個處理機都能緩存共享單元,高速緩沖存儲器一致性的維護是這類系統的關鍵,決定著系統的可伸縮性。
4、唯高速緩沖存儲器的分布式
在這種結構中,每個結點的存儲器相當於一個大容量的高速緩沖存儲器,數據一致性也在這一級維護。這種系統的共享存儲器的地址是活動的。存儲單元與物理地址分離,數據可以根據訪存模式動態地在各結點的存儲器間移動和復制。
5、無高速緩沖存儲器一致性的分布式
這種結構稱為無高速緩沖存儲器一致性的非均勻存儲訪問結構。它的特點是雖然每個處理機都有高速緩沖存儲器,但硬體不負責維護高速緩沖存儲器一致性,而由編譯器或程序員來維護。