簡體   English   中英

如何在 nginx 中創建正則表達式來破壞瀏覽器緩存?

[英]How to create a regex in nginx to break the browser cache?

我是一名程序員,所以不確定我是否在做夢,如果我認為我可以在應該是配置文件的地方做這種邏輯。 我需要的只是一個 nginx 響應,這樣包含 /cacheXXX 的請求應該去掉 url 的那部分。

所以:

/cache123/editor/editor.js -> /editor/editor.js

/cache456/admin/editor.css -> /admin/editor.css

/cache987/editor/editor.js -> /editor/editor.js

所以其他任何事情都應該被忽略,即:

/hello/editor/editor.js -> /hello/editor/editor.js

這里的關鍵是,如果 url 匹配:

/緩存XXX

然后剝離該部分並返回 rest。

nginx 位置條目會是什么樣子來實現這個外觀?

關於這一點的上下文,我試圖通過更改資源的路徑來為更新的資源提供新的 url,而不是更改不能保證的 url 參數來打破瀏覽器緩存。

一種解決方案是對 select 以/cache開頭的 URI 使用正則表達式位置,並提取文件名部分以返回正確的文件。

例如(假設root在某處定義):

location ~ ^/cache[0-9]+(/.*) {
    try_files $1 =404;
}

正則表達式location是按順序求值的,所以它在配置文件中的相對 position 很重要。 有關詳細信息,請參閱此文檔


您還可以使用重寫規則,例如:

rewrite ^/cache[0-9]+(/.*) $1 last;

有關詳細信息,請參閱此文檔


為了獲得最大效率,請將任一技術包裝在前綴location中,例如:

location ^~ /cache {
    rewrite ^/cache[0-9]+(/.*) $1 break;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM