日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
介紹asp.netcore的緩存靜態(tài)文件資源-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“介紹asp .net core的緩存靜態(tài)文件資源”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“介紹asp .net core的緩存靜態(tài)文件資源”吧!

創(chuàng)新互聯(lián)公司作為成都網(wǎng)站建設(shè)公司,專注重慶網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計,有關(guān)企業(yè)網(wǎng)站設(shè)計方案、改版、費用等問題,行業(yè)涉及成都橡塑保溫等多個領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。

前言

對靜態(tài)資源的簡單的一個概況,在《重新整理.net core 計1400篇》系列后面會深入。

正文

我們在加入中間件是這樣寫的:

app.UseStaticFiles();

默認(rèn)是給wwwroot提供資源。

那么我訪問https://localhost:44330/js/site.js 資源,就可以訪問到。

// Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
// for details on configuring this project to bundle and minify static web assets.

// Write your JavaScript code.

同樣我們可以自定義路徑。

app.UseStaticFiles(new StaticFileOptions {
	FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Static")),
	RequestPath="/static"
});

上面在根目錄下的static建立路由,路由路徑static 為標(biāo)識。

訪問:

https://localhost:44330/static/images/index.jpg

就能看到一張圖片了。

同樣再次訪問,https://localhost:44330/js/site.js 依然可以訪問,看了這個wwwroot 是一個釘子戶,無論如何添加還是存在的。

const string cacheMaxAge = "60480";
app.UseHttpsRedirection();
app.UseStaticFiles(new StaticFileOptions {
	FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Static")),
	RequestPath="/static",
	OnPrepareResponse = ctx => {
		ctx.Context.Response.Headers.Append("cache-control", $"public,max-age={cacheMaxAge}");
	}
}
);

可以設(shè)置一些緩存。

介紹asp .net core的緩存靜態(tài)文件資源

靜態(tài)文件授權(quán)

官方倒是提供了兩種方法。

一種是,讓靜態(tài)文件路由放到權(quán)限之后。

app.UseAuthentication();
app.UseAuthorization();

app.UseStaticFiles(new StaticFileOptions
{
	FileProvider = new PhysicalFileProvider(
				 Path.Combine(env.ContentRootPath, "Static")),
	RequestPath = "/static"
});

另一種比較自定義高:

[Authorize]
public IActionResult BannerImage()
{
 var filePath = Path.Combine(
  _env.ContentRootPath, "MyStaticFiles", "images", "red-rose.jpg");

 return PhysicalFile(filePath, "image/jpeg");
}

可以根據(jù)參數(shù)做一些邏輯變化。

但是這些方式比較影響性能,一般來說靜態(tài)文件是開放的,而用戶上傳的文件是通過加密的,放在存儲服務(wù)器上。

當(dāng)然小型項目,可以用用。

靜態(tài)文件目錄

Configure中添加:

app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
	FileProvider=new PhysicalFileProvider(Path.Combine(env.ContentRootPath,"Static")),
	RequestPath="/static"
});

這個中間件注入的位置是應(yīng)該在UseRouting之前的,同樣是性能問題。

然后在ConfigureServices中添加:

services.AddDirectoryBrowser();

效果:

介紹asp .net core的緩存靜態(tài)文件資源

這種方式呢,一般只是在dev環(huán)境下打開,真正的生產(chǎn)環(huán)境由于安全問題就不打開的。

默認(rèn)文檔

app.UseDefaultFiles();
app.UseStaticFiles();

app.UseStaticFiles(); 才是真正的路由。

app.UseDefaultFiles(); 只是說提供一些參數(shù),比如配置下面這些為默認(rèn)項。

default.htm
default.html
index.htm
index.html

其實是這樣一個過程,app.UseStaticFiles() 如果沒有找到相應(yīng)的路由,那么應(yīng)該給下一個中間件。

如果調(diào)用了app.UseDefaultFiles(),那么會去找是否存在默認(rèn)項,默認(rèn)是去wwwroot 下尋找上述的默認(rèn)項。

默認(rèn)文檔可以進行修改:

var options = new DefaultFilesOptions();
options.DefaultFileNames.Clear();
options.DefaultFileNames.Add("mydefault.html");
app.UseDefaultFiles(options);
app.UseStaticFiles();

UseFileServer 結(jié)合了 UseStaticFiles、UseDefaultFiles 和 UseDirectoryBrowser(可選)的功能。

app.UseFileServer(enableDirectoryBrowsing: true);

enableDirectoryBrowsing 表示是否使用UseDirectoryBrowser。

FileExtensionContentTypeProvider

FileExtensionContentTypeProvider 類包含 Mappings 屬性,用作文件擴展名到 MIME 內(nèi)容類型的映射。

比如說我去訪問:https://localhost:44330/static/test.myapp

我在static 下有test.mapp 這個文件,但是靜態(tài)文件處理并沒有去處理。

原因:

介紹asp .net core的緩存靜態(tài)文件資源

客服端發(fā)了這樣一個請求,人家接受這些流,但是服務(wù)器找到到,myapp 對應(yīng)的媒體類型,那么這個時候客戶端就不會接受了,服務(wù)端也認(rèn)為沒有找到。

官方給了例子:

var provider = new FileExtensionContentTypeProvider();
// Add new mappings
provider.Mappings[".myapp"] = "application/x-msdownload";
provider.Mappings[".htm3"] = "text/html";
provider.Mappings[".image"] = "image/png";
// Replace an existing mapping
provider.Mappings[".rtf"] = "application/x-msdownload";
// Remove MP4 videos.
provider.Mappings.Remove(".mp4");

app.UseDefaultFiles();
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
	FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Static")),
	RequestPath = "/static",
	OnPrepareResponse = ctx => {
		ctx.Context.Response.Headers.Append("cache-control", $"public,max-age={cacheMaxAge}");
	},
	ContentTypeProvider= provider
}

給他加一個媒體類型,認(rèn)為myapp 應(yīng)該是一個需要下載文件。

然后運行之,然后就會出現(xiàn)下載。

同樣,我們寫的是.html,如果我們不喜歡可以去寫.htm3也行。

https://localhost:44330/static/index.htm3

結(jié)果:

介紹asp .net core的緩存靜態(tài)文件資源

因為provider.Mappings[".htm3"] = "text/html";,.htm3被映射成了text/html,那么客戶端就按照這種格式處理。所以模板引擎就可以多樣性,有興趣自己也可以去設(shè)計。

這就是媒體類型映射。

如果是媒體類型未知的情況下,那么可以這樣:

app.UseStaticFiles(new StaticFileOptions
{
	FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Static")),
	RequestPath = "/static",
	OnPrepareResponse = ctx => {
		ctx.Context.Response.Headers.Append("cache-control", $"public,max-age={cacheMaxAge}");
	},
	ServeUnknownFileTypes = true,
	DefaultContentType = "image/png"
}
);

ServeUnknownFileTypes true

DefaultContentType "image/png" 讓客戶端按照圖片處理。

介紹asp .net core的緩存靜態(tài)文件資源

但是官方給了建議。

啟用 ServeUnknownFileTypes 會形成安全隱患。 它默認(rèn)處于禁用狀態(tài),不建議使用。

FileExtensionContentTypeProvider 提供了更安全的替代方法來提供含非標(biāo)準(zhǔn)擴展名的文件。

總結(jié)

到此,相信大家對“介紹asp .net core的緩存靜態(tài)文件資源”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


文章標(biāo)題:介紹asp.netcore的緩存靜態(tài)文件資源-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://www.dlmjj.cn/article/eeeeh.html