我的自定义 Dockerfile 遇到了一些奇怪的问题,在 alpine 容器中编译了一个 .Net 核心应用程序。
我尝试了许多不同的配置都无济于事 - 当我执行最后一条FROM指令时,缓存总是无效的(如果我注释掉它以及它下面的所有内容,缓存工作正常)。这是文件:
FROM microsoft/dotnet:2.1-sdk-alpine3.7 AS build
ARG ASPNETCORE_ENVIRONMENT=development
ARG ASPNET_CONFIGURATION=Debug
ARG PROJECT_DIR=src/API/
ARG PROJECT_NAME=MyAPI
ARG SOLUTION_NAME=MySolution
RUN export
WORKDIR /source
COPY ./*.sln ./nuget.config ./
# Copy source project files
COPY src/*/*.csproj ./
RUN for file in $(ls *.csproj); do mkdir -p src/${file%.*}/ && mv $file src/${file%.*}/; done
# # Copy test project files
COPY test/*/*.csproj ./
RUN for file in $(ls *.csproj); do mkdir -p test/${file%.*}/ && mv $file test/${file%.*}/; …Run Code Online (Sandbox Code Playgroud) 我试图使 C#/.NET 中的 CloudFront 对象无效并得到以下异常:
您的请求包含一个或多个无效失效路径。
我的功能:
public bool InvalidateFiles(string[] arrayofpaths)
{
for (int i = 0; i < arrayofpaths.Length; i++)
{
arrayofpaths[i] = Uri.EscapeUriString(arrayofpaths[i]);
}
try
{
Amazon.CloudFront.AmazonCloudFrontClient oClient = new Amazon.CloudFront.AmazonCloudFrontClient(MY_AWS_ACCESS_KEY_ID, MY_AWS_SECRET_KEY, Amazon.RegionEndpoint.USEast1);
CreateInvalidationRequest oRequest = new CreateInvalidationRequest();
oRequest.DistributionId = ConfigurationManager.AppSettings["CloudFrontDistributionId"];
oRequest.InvalidationBatch = new InvalidationBatch
{
CallerReference = DateTime.Now.Ticks.ToString(),
Paths = new Paths
{
Items = arrayofpaths.ToList<string>(),
Quantity = arrayofpaths.Length
}
};
CreateInvalidationResponse oResponse = oClient.CreateInvalidation(oRequest);
oClient.Dispose();
}
catch
{
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
传递给函数的数组包含一个 URL,如下所示: …
.net c# amazon-web-services cache-invalidation amazon-cloudfront
我想使用VaryByCustom属性使缓存无效.以下代码用于缓存设置.
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (!string.IsNullOrWhiteSpace(arg))
{
if (context.User.Identity.Name != null)
{
return context.User.Identity.Name;
}
}
return base.GetVaryByCustomString(context, arg);
}
Run Code Online (Sandbox Code Playgroud) 我将hashID 附加到由生成的包中webpack。每当我得到一个新的版本时,我都会看到文件名被新的哈希值更改,并且index.html文件引用了这些文件。但是,部署我的应用程序后,使用Chrome的某些用户只有从应用程序注销后才能看到新文件。有人遇到过这个问题吗,知道解决任何问题的解决方案吗?
我正在 React 中开发一个应用程序,它在客户端进行加密并将加密的内容发送回服务器以进行安全存储(例如考虑在线钱包)。这很有效,因为数据是安全的,以防有人恶意访问数据。但是,如果黑客访问服务器并更改实际的 React 代码以将数据以原始格式而不是加密格式发回,这将破坏整个系统。
那么我怎样才能强制 React 应用程序只缓存一次,然后在未来的任何时候,在它拉出应用程序的新版本之前,它会警告用户“有新的更新可用,他们需要检查 Twitter和/或 GitHub 以确保有效性”?
基本上我需要在“缓存失效”尝试发生之前检测它们并警告用户。我怎么能这样做?
Shiro提供了缓存功能,但就我而言,我正在为用户使用动态角色和权限.我需要使特定用户的缓存过期(如果有),以便权限的更改立即影响用户.
Realm中有一个方法,但是如何获取关联领域的实例来调用方法来清除缓存.
我使用s3 存储桶作为cloudfront中的源来缓存和托管我的Reactjs网站。
每次在 s3 上部署后,我都想使我的 cloudfront 发行版的缓存失效,以便用户可以获得部署的最新版本。
此外,在阅读cloudfront invalidation 的定价时,我想确保我不超过每月1000 个路径的免费套餐。另外,我们一个月内的生产部署不会超过 10 或 20 个。每个部署的目录中都有大约 500 个文件:
所以我的问题是:如果我用作"/*"失效查询,它会被视为1 路径吗?或者是500 条路径?