browser-cache 相关问题

浏览器缓存是称为缓存的优化机制的实例。


在Blazor WebAssembly站点中需要在CSS文件上进行缓存?

我读了这篇文章,但仍然有麻烦: 我有我的Blazor WebAssembly网站,带有一个静态索引。HTML文件,可以以正常的方式引导大麻。在它的中,我有 我读这个,但仍然遇到麻烦: 我有我的Blazor WebAssembly网站,带有一个静态索引。HTML文件,可以以正常的方式引导大麻。在它的<head>中,我有。 该文件是在部署时使用DockerFile运行步骤从SCSS构建的。 apcording at ressueed,我不需要破坏缓存的URL,因为Blazor会根据需要自动索取新鲜的URL。 但是,当我部署网站并在Firefox中打开它时,我会得到旧样式,并在Firefox开发人员工具网络选项卡中看到App.min.css从磁盘缓存中检索到。 我必须按CTRL+F5才能获得新样式。 那么,这条链中出了什么问题? 在我看来,我仍然需要在每次部署的CSS上为CACHE的URL。 需要设置什么,以便在二进制文件更改网站时下载我的CSS,以史蒂夫·桑德森(Steve Sanderson)在中建议的方式? 在此上添加游戏,但是使用新的.net6 headoutlet组件,您现在可以更轻松地配置它。对于我的特殊情况,我想从<link href="css/app.min.css" rel="stylesheet" />文件中配置CSS版本(该值设置为CI/CD构建时间)。为此,我需要能够从appsettings.json中阅读。如果这不是要求,则可以在此时使用任何C#代码来得出您的“版本”。我决定将其放入我的IConfiguration文件中,以便我只需要配置一次即可。这是我App.razor的片段。 App.razor 使用这种方法的小缺点意味着您需要将默认的Glazor CSS样式分开(如果使用它们),因为直到Blazor Framework接管该应用程序之前,才会加载此方法。另外,不要忘记将@using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <HeadContent> <link href="css/app.css?@(Configuration["BuildNumber"])" rel="stylesheet" /> </HeadContent> <Router AppAssembly="@typeof(Program).Assembly" PreferExactMatches="@true"> <Found Context="routeData"> <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" /> </Found> <NotFound> <LayoutView Layout="@typeof(MainLayout)"> <p>Sorry, there's nothing at this address.</p> </LayoutView> </NotFound> </Router> 添加到您的WebAssembly项目中。 HeadOutlet 我的项目是一个大型WASM .NET 6项目。 我已经从index.html文件中的头部删除了隔离的CSS文件(Program.cs)的链接,并在同一页面上添加了以下JavaScript。 现在,它将将链接注入头部,在这种情况下,它是yyyymmddhhmissssssss.的版本。 builder.RootComponents.Add<HeadOutlet>("head::after"); 添加了对大餐页面的样式引用,该引用可以根据汇编版本进行缓存,并从“ css/app.min.css”中读取数据中的数据。 现在您可以使用ASP-Append-version =“ true”来破坏cache <link href="ProjectName.styles.css" rel="stylesheet"/>

回答 2 投票 0


CSP在冷负载上发行镀铬和边缘,但可用于刷新。 Firefox也总是很好

我在AWS CloudFront提供的静态页面上工作,并存储在S3中。该页面是基本的HTML,CSS和JS。没有框架。由于在我的静态站点上不可能使用Nonces,因此CSP是通过哈希实现的。

回答 0 投票 0

window.fetch 不使用来自 <img src=

假设我正在使用 window.fetch 下载已在浏览器中显示的图像的副本。 (实际上,由于 CORS,我正在使用 GM.xmlhttpRequest,但这个最小的示例显示......

回答 1 投票 0

如何从chrome中清除“内存缓存”和“磁盘缓存”?

我正在构建一个使用 SSR 的 NextJS 应用程序。我很快就会在线托管这个网站,但我需要检查首次用户加载我们的应用程序时使用了多少带宽。我...

回答 1 投票 0

仅重新加载 serviceworker 缓存中已更改的文件

我正在使用 ServiceWorker 来预缓存文件。每当我构建应用程序时都会生成 serviceworker.js,并且所有比 serviceworker.js 的最新版本更新的文件都会添加到该文件中...

回答 1 投票 0

如何在 ExpressJS + NodeJS 中禁用网页缓存?

默认情况下,我的浏览器会缓存 ExpressJS 应用程序的网页。 这导致我的登录系统出现问题(未登录的用户可以打开已登录用户的旧缓存页面)。 如何禁用此功能

回答 4 投票 0

针对短期数据的缓存存储与 IndexDB

我需要处理 500MB 的文件上传,用户可能会被重定向到登录页面,然后返回以恢复上传。要临时存储文件,可以使用 IndexedDB 或 CacheStorage 等选项

回答 1 投票 0

GrandNode 2.0 缓存问题:管理中的更改未立即反映在前端

我正在使用 GrandNode 2.0.0 进行电子商务项目。该设置由两个独立的项目组成: Grand.Web(前端),在一个端口上运行。 Grand.Admin(管理后端),在不同的

回答 1 投票 0

Angular 17.1 中的客户端缓存问题

我在 Angular 17.1 中遇到缓存问题,我的所有文件都经过哈希处理,但客户端浏览器未收到更新。有用户缓存了4天,我上传的版本没有效果...

回答 1 投票 0

资源修改后ETag更新

假设我有以下 2 个端点,它们获取并更新我的服务器上的资源: 获取/我的资源 PUT /我的资源 我们现在想要实现浏览器缓存以最小化我们的负载

回答 1 投票 0

需要对 Blazor WebAssembly 站点中的 CSS 文件进行缓存清除

我有一个 Blazor WASM .NET6 应用程序,它在其 index.html 中使用两个样式表: 我有一个 Blazor WASM .NET6 应用程序,它在其 index.html 中使用两个样式表: <link href="css/app.min.css" rel="stylesheet" /> <link href="css/Client.min.css" rel="stylesheet" /> 如何在构建时向文件添加一些版本号或日期,例如: <link href="css/app.min.20211119.css" rel="stylesheet" /> <link href="css/Client.min.20211119.css" rel="stylesheet" /> 触发浏览器下载新副本? 我的构建管道中已经有了 PostCSS 设置,所以 npm 解决方案对我来说没问题。 需要创建新文件并更新index.html 我发现了几个类似的问题,但没有一个有有效的解决方案。 更新: 我找到了 Replace in file npm 包,它似乎可以满足我的需要。将其与 fs.rename npm 包结合起来,我应该能够向我的文件名添加指纹并更改我的 index.html 中的链接。 我已经弄清楚如何对 index.html 中的链接执行此操作: // in package.json "fingerprint": "replace-in-file --configFile=fingerprint.config.js" // in fingerprint.config.js module.exports = { files: 'wwwroot/index.html', from: [/app.(min|[0-9]*).css/g, /Client.(min|[0-9]*).css/g], to: ['app.' + require('dayjs')().format('YYYYMMDDHHmm') + '.css', 'Client.' + require('dayjs')().format('YYYYMMDDHHmm') + '.css'], }; 这段代码在构建后运行,因此最终代码中没有任何 JavaScript 内容。 我一整天都在尝试重命名实际的 CSS 文件。但无法让它发挥作用。 我的尝试: // In package.json "rename:fs": "node -e \"require('fs').rename('wwwroot/css/app.min.css', 'wwwroot/css/app.'+require('dayjs')().format('YYYYMMDDHHmm')+'.css', () => {})\"", "rename:2": "renamer --dry-run --find \"/^(app|Client).(min|[0-9]*).css$/\" --replace \"$1.bar.css\" \"wwwroot/css/*\"", "rename": "node -e rename.js" // rename.js const fs = require('fs'); const path = require('path'); //var args = process.argv.slice(2); var dir = "wwwroot/css/"; var match = RegExp("^(app|Client).(min|[0-9]*).css$", 'g'); var fp = require('dayjs')().format('YYYYMMDDHHmm'); var replace = RegExp('$1.' + fp + '.css'); var files; //reading the dir files = fs.readdirSync(dir); files.filter(function (file) { return file.match(match); }).forEach(function (file) { var filePath = path.join(dir, file), newFilePath = path.join(dir, file.replace(match, replace)); //using fs.rename function to rename files fs.renameSync(filePath, newFilePath); }); 重命名器版本rename:2效果最好。我可以在查找部分使用正则表达式,但无法让它在替换部分工作。 现在我将坚持更改查询字符串,而不是我想要的解决方案。但现在已经足够了。 在开发过程中,我使用了这个 javascript 解决方法。 我应该将其删除并替换为您用于生产的原始标记,特别是当您可能试图在 WebAssembly 应用程序中避免使用 JavaScript 时。 let dt=new Date(); const lnk=document.createElement('link'); lnk.setAttribute('href','css/app.min.css?u='+dt.getTime()); lnk.setAttribute('rel','stylesheet'); document.getElementByTagName('head')[0].appandChild('lnk'); CSS 文件上的唯一查询字符串强制浏览器获取新副本,但应用程序只是忽略额外的数据。 更好的答案可能是,在 Web 程序集中添加 css 标签: <link href="css/@(myawesomeappcss)" rel="stylesheet"/> <link href="css/@(myawesomeclientcss)" rel="stylesheet"/> 然后使用以下内容: @code { private string myawesomeappcss = "app.min.css?u="; private string myawesomeclientcss = "client.min.css?u="; protected override async Task OnInitializedAsync() { DateTime dt= DateTime.Now; myawesomeappcss += ((DateTimeOffset)dt).ToUnixTimeSeconds(); dt = dt.AddMilliseconds(1); myawesomeclientcss += ((DateTimeOffset)dt).ToUnixTimeSeconds(); } } 尽管如此,在发布之前删除 JavaScript 版本会更容易。 如果有人遇到这个问题: 在 .NET 9 中现在有一个内置功能: ASP.NET Core 9.0 静态资产交付优化的新增功能 另请参阅:ASP.NET Core Blazor 静态文件 服务器端 Blazor 应用程序中的静态资产交付 这也适用于 WASM。 简短版本: 添加资产 <link rel="stylesheet" href="@Assets["bootstrap/bootstrap.min.css"]" /> <link rel="stylesheet" href="@Assets["app.css"]" /> <link rel="stylesheet" href="@Assets["BlazorSample.styles.css"]" /> 更换中间件: +app.MapStaticAssets(); -app.UseStaticFiles();

回答 3 投票 0

如何配置 PHP 缓存头以防止不必要的浏览器请求

现在总是发出请求,然后返回 304 Not Modified,但如果浏览器根本不发出请求会更好。我如何实现这一点,发送哪些标头,...

回答 1 投票 0

使用 Angular Service Worker 时如何在注销后清除 api 的响应缓存?

我通过使用角度生成的服务工作线程缓存API的响应,现在我想在用户决定注销后清除这些缓存,我制作了新的自定义服务工作线程文件来监听混乱...

回答 1 投票 0

制作页面告诉浏览器不要缓存/保留输入值

大多数浏览器都会缓存表单输入值。因此,当用户刷新页面时,输入具有相同的值。 这是我的问题。当用户单击“保存”时,服务器会验证 POSTed 数据(例如选中

回答 7 投票 0

WP 火箭缓存问题

我正在做一个网站,网站中有wp-rocket。我启用了缓存功能。 现在的问题是当 wp Rocket 创建缓存时,它无法显示我在网站中的 css 和 js 更改。所以我...

回答 3 投票 0

最小 API 的响应缓存

我们在 C# 项目中从老式控制器转向最小 API。到目前为止,对于大多数观点来说,我们更喜欢最小的 API。然而我们无法解决一个主题:响应缓存。 在控制器中

回答 1 投票 0

网站如何显示“您离线”的页面

当您尝试在离线状态下再次访问某些网站时,某些网站会设法显示错误页面。例如这个购物网站: https://www.mumzworld.com/sa-ar/graffiti-resin-graffiti-resin-color-...

回答 1 投票 0

Flutter Web:发布后缓存未清除导致旧内容持续存在

Flutter Web 应用程序最大的问题之一是浏览器在部署后无法正确清除缓存。这允许用户即使在更新网络应用程序后也可以查看旧内容...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.