小编Ben*_*mon的帖子

使用Page.Render覆盖进行缓存后替换

上下文

我有一个Asp .Net Web应用程序,其中一些页面继承自基类"BasePage".这个BasePage类继承自System.Web.ui.Page并且我覆盖了Render方法,这样我就可以在将HTML流发送到客户端浏览器之前拦截它.

这是我的Render方法的代码:

protected override void Render(HtmlTextWriter writer){

    MemoryStream memoryStream = new MemoryStream();

    try
    {
        using (StreamWriter streamWriter = new StreamWriter(memoryStream))
        {
            var textWriter = new HtmlTextWriter(streamWriter);
            base.Render(textWriter);
            textWriter.Flush();
            memoryStream.Position = 0;

            using (StreamReader reader = new StreamReader(memoryStream))
            {
                string finalHtml = reader.ReadToEnd();

                // Processing filters
                finalHtml = FilterManager.ProcessFilters(finalHtml);

                // Writing output to client
                writer.Write(finalHtml);
                reader.Close();
            }
        }
    }
    catch(ObjectDisposedException)
    {

    }
    finally
    {
        memoryStream.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.有用.我没有使用响应过滤功能的原因是我知道它与Post-cache替换不兼容

是.我也想使用outputcache替换.出于测试目的,我在aspx页面中添加了一个小的asp .net控件:

<asp:Substitution runat="server" id="UnCachedArea" methodname="GetFreshDateTime" /> …
Run Code Online (Sandbox Code Playgroud)

asp.net outputcache substitution

12
推荐指数
1
解决办法
1281
查看次数

过期标题最大值

我在S3存储桶上有数百万个图像文件,我知道它们永远不会改变.为了优化请求,我决定在我的文件中添加一个过期标题(如下所述:google page speed rules)

将标题添加到我的所有文件的过程是漫长而昂贵的,所以我不想重复它.但是,Http Rfc建议将Expires标头设置为未来一年的最大到期日期:

HTTP/1.1服务器不应该在将来发送超过一年的过期日期

...这意味着我必须在一年内更新我的标题.

我的问题是:

我可以将标头值设置为非常远的日期(例如:01-01-2020)并违反RFC建议吗?这样做的风险是什么?

是否有另一种解决方案告诉客户请求我的文件无限期地缓存它们,而不必更新我的亚马逊S3存储上的任何内容?

amazon-s3 http-headers

5
推荐指数
2
解决办法
5906
查看次数

渲染视图时我应该使用return关键字吗?

我不确定这是否如此重要,但我喜欢干净的代码,所以这是我的问题:

我使用带有express的node.js.我已经声明了呈现视图的路由:

app.get("/", function(req, res){
    return res.render("index.jade");
});
Run Code Online (Sandbox Code Playgroud)

我可以删除"return"关键字,如下所示:

app.get("/", function(req, res){
   res.render("index.jade");
});
Run Code Online (Sandbox Code Playgroud)

我发现了很多带有两种语法的例子.不知道使用哪一个.

谢谢.

node.js express

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