Ubuntu - > Apache - > Phusion Passenger - > Rails 2.3
我网站的主要部分会对您的点击做出反应.因此,如果您点击链接,它会将您发送到目的地,并立即重新生成您的页面.
但是,如果您点击后退按钮,则看不到新页面.不幸的是,如果没有手动刷新,它就不会出现; 看来浏览器正在缓存它.我想确保浏览器不缓存页面.
另外,我确实想为所有静态资产设置远期到期日期.
解决这个问题的最佳方法是什么?我应该在Rails中解决这个问题吗?Apache的?JavaScript的?
谢谢你的帮助,杰森
唉.这些建议都没有强迫我正在寻找的行为.
也许有一个JavaScript的答案?我可以让rails在注释中写出时间戳,然后让javascript检查以查看时间是否在五秒钟内(或者无论什么工作).如果是,那么很好,但如果没有,那么重新加载页面?
你认为这会有用吗?
感谢你的帮助,
贾森
我正在编辑Visual Studio 2012中的.css文件(在调试模式下).我正在使用Chrome作为我的浏览器.当我在Visual Studio中更改我的应用程序的.css文件并保存时,刷新页面将不会加载我的.css文件中的更新更改.我认为.css文件仍然是缓存的.
我试过了:
除非我手动停止调试(关闭Chrome),重新启动应用程序(在调试中),否则似乎没有任何效果.
有没有办法迫使Chrome总是重新加载所有的CSS更改并重新加载.css文件?
更新:
1.刷新时,我的.aspx文件中的内联样式更改被选中.但是.css文件中的更改不会.2.它是一个ASP.NET MVC4应用程序,所以我点击一个超级链接,它执行GET.这样做,我没有看到样式表的新请求.但是单击F5,将重新加载.css文件,并且状态代码(在网络选项卡上)为200.
我正在尝试使用Retrofit和OKHttp来缓存HTTP响应.我按照这个要点,结束了这段代码:
File httpCacheDirectory = new File(context.getCacheDir(), "responses");
HttpResponseCache httpResponseCache = null;
try {
httpResponseCache = new HttpResponseCache(httpCacheDirectory, 10 * 1024 * 1024);
} catch (IOException e) {
Log.e("Retrofit", "Could not create http cache", e);
}
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setResponseCache(httpResponseCache);
api = new RestAdapter.Builder()
.setEndpoint(API_URL)
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(new OkClient(okHttpClient))
.build()
.create(MyApi.class);
Run Code Online (Sandbox Code Playgroud)
这是带有Cache-Control标头的MyApi
public interface MyApi {
@Headers("Cache-Control: public, max-age=640000, s-maxage=640000 , max-stale=2419200")
@GET("/api/v1/person/1/")
void requestPerson(
Callback<Person> callback
);
Run Code Online (Sandbox Code Playgroud)
首先,我在线请求并检查缓存文件.有正确的JSON响应和标题.但是当我尝试离线请求时,我总是得到RetrofitError UnknownHostException.我还有什么办法让Retrofit从缓存中读取响应吗?
编辑:
因为OKHttp 2.0.x HttpResponseCache是Cache …
我正在尝试使用http缓存.在我的控制器中,我按如下方式设置响应:
$response->setPublic();
$response->setMaxAge(120);
$response->setSharedMaxAge(120);
$response->setLastModified($lastModifiedAt);
Run Code Online (Sandbox Code Playgroud)
开发模式
在开发环境中,第一个响应是带有以下标题的200:
cache-control:max-age=120, public, s-maxage=120
last-modified:Wed, 29 Feb 2012 19:00:00 GMT
Run Code Online (Sandbox Code Playgroud)
在接下来的2分钟内,每个响应都是304,包含以下标题:
cache-control:max-age=120, public, s-maxage=120
Run Code Online (Sandbox Code Playgroud)
这基本上是我所期望的.
刺激模式
在prod模式下,响应头是不同的.请注意,在app.php中,我将内核包装在AppCache中.
第一个响应是200以下标题:
cache-control:must-revalidate, no-cache, private
last-modified:Thu, 01 Mar 2012 11:17:35 GMT
Run Code Online (Sandbox Code Playgroud)
所以这是一个私有的无缓存响应.
每一个下一个请求都是我所期望的那样; 带有以下标题的304:
cache-control:max-age=120, public, s-maxage=120
Run Code Online (Sandbox Code Playgroud)
我应该担心吗?这是预期的行为吗?
如果我把Varnish或Akamai服务器放在它面前会发生什么?
我做了一些调试,我认为响应是私有的,因为最后修改过的头文件.HttpCache内核使用EsiResponseCacheStrategy来更新缓存的响应(HttpCache :: handle()方法).
if (HttpKernelInterface::MASTER_REQUEST === $type) {
$this->esiCacheStrategy->update($response);
}
Run Code Online (Sandbox Code Playgroud)
如果EsiResponseCacheStrategy 使用Last-Response或ETag(EsiResponseCacheStrategy :: add()方法),则将响应转换为非缓存:
if ($response->isValidateable()) {
$this->cacheable = false;
} else {
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果存在Last-Response或ETag标头,则Response :: isValidateable()返回true. …
我想在IIS7中为我的ASP.NET网站中的静态内容缓存设置规则.
我已经看过这些文章,详细介绍了如何使用以下<clientCache />元素web.config:
但是,此设置似乎全局适用于所有静态内容.有没有办法只为某些目录或扩展这样做?
例如,我可能有两个需要单独缓存设置的目录:
/static/images
/content/pdfs
是否有可能建立规则发送缓存头(max-age,expires基于扩展和文件夹路径等)?
请注意,我必须能够这样做,web.config因为我无法访问IIS控制台.
在开发过程中,我必须始终在Firefox中"清除缓存",以使其使用最新版本的JavaScript文件.
是否有某种设置(about:config)完全关闭JavaScript文件的缓存?或者,如果没有,对于所有文件?
在最新版本的Notepad ++上,当应用程序关闭时,重新启动应用程序时会保留未保存的文件.
我假设这些文件缓存在临时文件上.该文件的位置是什么.
谢谢
当我访问chesseng.herokuapp.com时,我得到一个看起来像的响应头
Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/css
Date:Tue, 16 Oct 2012 06:37:53 GMT
Last-Modified:Tue, 16 Oct 2012 03:13:38 GMT
Status:200 OK
transfer-encoding:chunked
Vary:Accept-Encoding
X-Rack-Cache:miss
Run Code Online (Sandbox Code Playgroud)
然后我刷新页面然后得到
Cache-Control:private
Connection:keep-alive
Date:Tue, 16 Oct 2012 06:20:49 GMT
Status:304 Not Modified
X-Rack-Cache:miss
Run Code Online (Sandbox Code Playgroud)
所以看起来缓存工作正常.如果它适用于缓存,则Expires和Cache-Control的重点是:max-age.更令人困惑的是,当我在https://developers.google.com/speed/pagespeed/insights/上测试该页面时,它告诉我"利用浏览器缓存".
caching ×10
http-headers ×3
android ×1
apache ×1
css ×1
filesystems ×1
firefox ×1
http ×1
http-caching ×1
iis ×1
iis-7 ×1
image ×1
java ×1
javascript ×1
mysql ×1
notepad++ ×1
okhttp ×1
retrofit ×1
ruby ×1
symfony ×1
web-config ×1