标签: cache-control

如何以编程方式清除缓存?

在我的应用程序(ASP.NET+ c#)中,我需要在用户进入aspx页面之前清除缓存.

有没有人知道如何以编程方式清除aspx页面或后面的代码(c#)中的缓存?

c# asp.net cache-control

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

使用rails的异步缓存过期

我的应用程序使用"常规"缓存清理程序(ActionController :: Caching :: Sweeper的子类)来缓存缓存(主要是片段).

现在,缓存过期会将应用程序锁定几秒钟,对客户所感知的性能产生负面影响.

能够异步地过期缓存会很棒,例如使用delayed_job(应用程序当前托管在heroku上).

不幸的是,简单地将handle_asynchronously添加到清扫器内的缓存过期功能似乎不起作用.

是否可以使用delayed_job异步使缓存片段到期?如果是这样,那么最好的做法是什么?

ruby-on-rails cache-control delayed-job

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

是否有用于缓存文件的Java库?

是否有将库文件缓存到内存和磁盘的java库?基本上,我希望库将文件缓存到内存中.但是,如果内存缓存大于某个阈值,则应将某些文件写入磁盘.

是否有任何Java库可以做到这一点?

GRAE

更新:

只是一些一般性评论.

我只会使用这些文件一次.它们只是临时文件.在一个完美的世界里,我会把它们全都留在记忆中.但是,我想我会耗尽内存.我猜我真正想要的是某种寻呼系统.这可以让我的内存耗尽,但也允许我避免写入每个磁盘.

java filesystems memcached caching cache-control

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

在Rails 3.1中以开发模式启用图像缓存

在Rails 3.1开发模式中(使用资产管道时),使用响应标头"Cache Control:must-revalidate"提供由资产/图像提供的图像.

这意味着Google Chrome(以及看似只有Chrome)会尝试多次重新获取图片 - 即使在单页视图中也是如此.这导致了通过JavaScript进行DOM操作的所有方式的棘手问题.仅举几例:

  • jQuery UI Draggable有时会与鼠标光标有明显的偏移
  • 添加或删除引用图像的CSS类将闪烁或调整大小,同时图像请求(将始终返回304未修改)正在进行中.
  • 附加或替换包含图像的HTML节点将触发更多图像提取,这将导致其下方的整个节点树闪烁,因为Chrome等待每个图像的304响应.

我完全可以理解,对于开发服务器来说,这是一个合理的事情.我甚至可以理解,即使在单页视图中,Chrome也拒绝缓存图像,这是非常合理的.

那么,有没有办法改变Rails应用于开发中的图像响应的缓存控制头?

更新:正如几个人所建议的那样,一个更有趣的问题是,当没有其他浏览器出现时,为什么Chrome会尝试在网页浏览中多次重新获取图片?(为什么这不会给其他开发者带来问题?)

更新x2:我不打算将此作为答案提交,因为它只是一个适合我的目的的解决方法,但我们能够通过预编译资产然后丢弃预编译的CSS和JS来解决这个问题.(这将要求sprockets调试变为false development.rb.)

rake assets:precompile
cd public/assets
find . -name "*.js*" -exec rm -rf {} \;
find . -name "*.css*" -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

google-chrome cache-control ruby-on-rails-3 asset-pipeline

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

设置Cloudfront永远不会重新获取资产

我有一个Rails应用程序,它使用Cloudfront作为其CDN和sprockets来压缩资产并设置长Cache-Control标头.

对资产的第一个请求给我响应头像这样:

Cache-Control:public, max-age=31536000
Connection:close
Content-Encoding:gzip
Content-Type:application/javascript
Etag:"892a3afb514e3c84646835f9ef101026"
Last-Modified:Tue, 17 Jan 2012 16:05:17 GMT
Server:thin 1.2.11 codename Bat-Shit Crazy
Vary:Accept-Encoding
Via:1.0 c662f4e5a3bc7b224ce1bbecb0a23d82.cloudfront.net:11180 (CloudFront), 1.0 fc4797024fafe16fcc03e892c23f078d.cloudfront.net:11180 (CloudFront)
X-Amz-Cf-Id:bd2a89fb81bba2513f30d6940347693ef483defb4783da06d81b002af23545c39b9176b2c7cb144f,VF69FYlYU8ezzHQp7QkU2GvEQ8NmDqEwRX-wu7H63yNqE1ZlTaAq3g==
X-Cache:Miss from cloudfront
X-Runtime:0.012413
X-Ua-Compatible:IE=Edge,chrome=1

完善.它错过了Cloudfront的缓存,从我的应用程序中获取了缓存,因此它应该从现在开始加载它.

现在......如果我刷新页面,我会收到以下响应标题:

Connection:keep-alive
Server:thin 1.2.11 codename Bat-Shit Crazy
Via:1.0 86123d99569c9296c8605243e9a10621.cloudfront.net:11180 (CloudFront), 1.0 de9fc23d505dae3d19973a98bfa1eba0.cloudfront.net:11180 (CloudFront)
X-Amz-Cf-Id:a7bf6ffb30c43d306835190d210aeb8ec794c1ff619ad7aaecbad220c1822fe165bda624ae8382e1,bcij_88KOAvLPSqEKDRSvOBjEj7atiKBCAjSbqc2cfdb-BHOTi--LA==
X-Cache:RefreshHit from cloudfront
X-Runtime:0.006909
X-Ua-Compatible:IE=Edge,chrome=1

看起来它打到了Cloudfront.我得到了304 not modified.所以我似乎并没有再次下载文件,但我发现这个请求也是我的源服务器.

为什么会这样?Cloudfront现在不应该始终缓存我的资产吗?我正在对我的资产进行版本控制,所以除了第一个请求之外,我真的绝不希望从服务器获取它.有什么办法可以强迫这种行为吗?

ruby-on-rails cache-control amazon-cloudfront

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

如何从WebView清除登录凭据?

我想清除应用程序数据,就像我可以从设置中做到这一点.当我登录到facebook或twitter时,我需要在WebView中清除登录信息,因为当我为以下每个用户登录一次时会自动使用相同的数据

我试试这个:http: //www.hrupin.com/2011/11/how-to-clear-user-data-in-your-android-application-programmatically

没用,登录信息仍然在浏览器中

我尝试重置应用:

Intent i = getBaseContext().getPackageManager()
             .getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

@Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        view.clearCache(true);

        if(b){
            Log.d("WEBVIEW", "onFinisghed b true");
        Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
        noCacheHeaders.put("Pragma", "no-cache");
        noCacheHeaders.put("Cache-Control", "no-cache");
        view.loadUrl(url, noCacheHeaders);
        b = false;
        }...
Run Code Online (Sandbox Code Playgroud)

大多数条目是指链接中描述的第一种方法,但它在我的情况下不起作用,任何想法?

cookies android cache-control android-webview

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

为什么在注销后单击页面上的后退按钮会显示上一页内容?

我正在开发一个Struts 2项目.当用户单击logout按钮时,logout操作将使用清除会话session.clear().但是当用户back在注销后单击浏览器中的按钮时,它仍会显示上一页内容.如果back在注销后在浏览器中单击了按钮,我想将用户重定向到登录页面.

在我的注销行动中我还有什么要清楚解决这个问题吗?任何帮助将不胜感激.

java session jquery struts2 cache-control

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

在Golang中实现GitHub徽章

之前已经问过这个问题而没有得到满意的答复,所以这次我试着更具体一点.

我想在golang中实现一个服务器,它以svg的形式输出动态状态更新.(想想"构建传递/失败"GitHub徽章.)目的是应该能够在GitHub自述文件中嵌入到服务器地址的链接,并且自述文件应根据服务器状态自动更新.

这是我提出的golang代码,但它似乎不适用于GitHub积极缓存.我是否需要添加更多Cache-Control标头?我需要添加ETag吗?

我正在使用以下内容将图像嵌入GitHub自述文件中.

[![Mine](http://58dcd0b5.ngrok.com/view)]()
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望GitHub自述文件每次加载时都会更改图像 - 在两个图像之间翻转"正确"/"错误".(这只是概念证明.)

package main

import (
    "log"
    "net/http"
    _ "time"
)
var mymap map[string][]byte

var state bool = false


func viewHandler(w http.ResponseWriter, r *http.Request) {
    log.Printf("State %v", state)
    state = !state
    w.Header().Set("Content-Type", "image/svg+xml")
    w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
    if state {
        w.Write(mymap["correct"])
    } else {
        w.Write(mymap["wrong"])
    }
}

func main() {
    mymap = make(map[string][]byte)
    mymap["correct"] = []byte(`<svg xmlns="http://www.w3.org/2000/svg" width="104" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="a"><rect width="104" height="20" rx="3" fill="#fff"/></mask><g …
Run Code Online (Sandbox Code Playgroud)

github cache-control go

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

可以通过浏览器缓存500 Internat Server Error响应吗?

在调试生产问题时,我们发现对URL的GET请求正在500 Internal Server Error为一个用户返回200 OK,但为其他人返回.看起来500是从缓存中提供的,但是自从重现这个bug以来的任何尝试都没有成功.

我的问题是:是否可以通过浏览器缓存错误响应?如果是这样,哪些浏览器支持它以及我需要复制它的缓存头?

我的直觉是不应缓存错误响应,因为即使修复了错误,您仍将继续被拒绝服务.基于哪些HTTP状态代码可缓存?它看起来似乎500不应该是可缓存的.缓存策略是否跨浏览器一致地实施?

browser cache-control http-caching browser-cache

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

更改S3对象标头不会影响CloudFront

昨天我在S3中查看了一个桶中的对象,并添加了这个标题:

Cache-Control: max-age=604800
Run Code Online (Sandbox Code Playgroud)

我是使用更改元数据选项完成的,因为我可以轻松地在每个文件夹中应用它:

在此输入图像描述

现在,如果我直接请求图像,我会看到正确的标题:

Cache-Control: max-age=604800
Date: Fri, 25 May 2018 11:28:53 GMT
ETag: "1abf6cb38c4645f3de14a19beba80019"
Last-Modified: Fri, 25 May 2018 11:11:11 GMT
Server: AmazonS3
x-amz-id-2: qQk8NrWHNCOV5SmLvSQGahvYKuQIkcqQdc2I4Hdm2QLGkhet8cF4n1O+c2HLxhEVl7iBReFSflo=
x-amz-request-id: 97C53C15E86CD3FF
Run Code Online (Sandbox Code Playgroud)

但这是我通过CloudFront请求图像时的响应:

HTTP/1.1 304 Not Modified
Connection: keep-alive
Date: Fri, 25 May 2018 11:28:15 GMT
ETag: "1abf6cb38c4645f3de14a19beba80019"
Server: AmazonS3
Age: 70693
X-Cache: Hit from cloudfront
Via: 1.1 1d7454c76d6ac81147ca3cbd1284c8ae.cloudfront.net (CloudFront)
X-Amz-Cf-Id: CLiExdWbIvxcBFcoND6JYjcKQj54QyQkWl48OyPpUPLupHZl8SPfPQ==
Run Code Online (Sandbox Code Playgroud)

我在添加此标题时的意图是改进Pingdom for Leverage浏览器缓存的结果,但我仍然通过该部分中列出的CloudFront获取此桶中的URL:

https://d253b1eioa5z7b.cloudfront.net/bc_video_ ... 6_9_576_67de5812-fd82-4476-8b3f-886ad3a4907d.png
https://d253b1eioa5z7b.cloudfront.net/bc_video_ ... 6_9_576_a7ddd1ed-0913-41f6-927e-9db33b582a89.jpg
Run Code Online (Sandbox Code Playgroud)

当我对S3中的其他对象执行同样的操作时,我直接从网站上使用(没有CDN),我立即注意到对Pingdom结果的影响.

我应该等吗?或者我在这里做错了什么?

caching cdn cache-control amazon-s3 amazon-cloudfront

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