小编Nik*_*Nik的帖子

在ASP.Net MVC和IIS 7.5中设置最佳的http缓存头和服务器参数

我有一个ASP.Net站点(碰巧是MVC,但这里没有关系),我想要缓存的几页很好.

具体来说,我想实现:

  1. 输出缓存在服务器上2个小时.
  2. 如果服务器上的文件内容发生更改,则应该为该页面刷新该输出缓存
  3. 在浏览器中缓存10分钟(即甚至不询问服务器是否新鲜)
  4. 当浏览器确实发出实际的后续请求时,我希望它使用etags,这样服务器如果没有修改就可以返回304.

(注意 - 以上时间值仅供参考)

  • 1)和2)我可以通过Response.Cache.SetCacheability(HttpCacheability.Server)来实现
  • 我知道3)可以通过使用max-age和cache-control实现:private
  • 我可以用Response.Cache.SetETagFromFileDependencies()发出etags;

但我似乎无法让所有这些东西一起工作.这就是我所拥有的:

    Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);
        Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        Response.Cache.SetETagFromFileDependencies();
        Response.Cache.SetValidUntilExpires(true);
        Response.Cache.SetMaxAge(TimeSpan.FromSeconds(60 * 10));
Run Code Online (Sandbox Code Playgroud)

我想要的场景可能吗?特别是:

  • 浏览器可以同时执行3)和4)吗?当Firefox在本地缓存中过期后发出新请求时,它确实发送了服务器之前响应的etag,但我得到了200响应.
  • 设置上面的变量,我在哪里设置输出缓存的持续时间?

谢谢你的任何提示!

asp.net asp.net-mvc caching outputcache http-headers

18
推荐指数
1
解决办法
1753
查看次数

如何在.NET中生成版本1 Guid?

据我所知,依赖于时间戳和MAC地址的版本1 Guids被版本4取代 - 更随机 - 在Windows 2000或其附近.

从.Net生成第1版guid的最简单方法是什么,如果我更喜欢它的版本4?

(我确实希望时间戳和(几乎)唯一的机器ID可以被提取.我确实控制整个环境 - 我没有隐私/任何绝对随机性的损失)

谢谢.

.net guid

5
推荐指数
1
解决办法
798
查看次数

如何使用 amazon sdk 为虚域生成预签名的 Amazon S3 url?

我有一个名为 foo.example.com 的 s3 存储桶,它的所有 CNAME 都正确。

我正在切换到最新的 AWS .net SDK。

我希望生成预签名的 url,如:

http://foo.example.com/myfile.txt?s3_params_here

注意那里的虚荣cname。

我有:

string bucketName = "foo.example.com";

AmazonS3Client s3Client = new AmazonS3Client("bar", "xxx",
    new AmazonS3Config
    {
        ServiceURL = bucketName, 
        CommunicationProtocol = Protocol.HTTP
    });


string key = "myfile.txt";


GetPreSignedUrlRequest request = new GetPreSignedUrlRequest()
.WithBucketName(bucketName)
.WithKey(key)
.WithExpires(DateTime.Now.AddMinutes(5))
.WithProtocol(Protocol.HTTP);

string url = s3Client.GetPreSignedURL(request);
Run Code Online (Sandbox Code Playgroud)

我得到的网址是这样的:

http://foo.example.com.foo.example.com/myfile.txt?AWSAccessKeyId=bar&Expires=1331069777&Signature=234KoUUvfE1nCcs2vLj9RQUhqF8%3D

这显然是错误的。

我已经尝试了许多不同的 ServiceURL、bucketname 等变体,但似乎没有任何效果。

我找不到任何好的文档 - 这样做的正确方法是什么?

谢谢。

.net c# amazon-s3

5
推荐指数
1
解决办法
6808
查看次数

RSS标题的目的是什么?

大多数新闻/博客网站都在其标题中包含RSS提要链接.例如:

<link rel="alternate" type="application/rss+xml" title="Example Feed" href="http://example.com/feed/" />
Run Code Online (Sandbox Code Playgroud)

我想知道上面添加的实际用途是什么?是告诉浏览器该网站有RSS源吗?在过去,Firefox在地址栏中有按钮,但现在他们已将其删除.此外,如果某些用户想要订阅RSS,他需要直接输入feed url.那么它在哪里使用?谢谢

rss header

3
推荐指数
1
解决办法
1649
查看次数

标签 统计

.net ×2

amazon-s3 ×1

asp.net ×1

asp.net-mvc ×1

c# ×1

caching ×1

guid ×1

header ×1

http-headers ×1

outputcache ×1

rss ×1