我注意到如果按回浏览器的后退按钮返回到Ask Question页面,会记住Title或Body部分.
我测试的所有浏览器都提供此功能,但我自己的项目中的表单不存在此功能.
我该如何处理这种效果?
UPDATE
我仍然没有任何线索,但猜猜是某种客户端缓存由http标头或javascript启用?
用户退出后,如果他们点击后退按钮,他们可以在退出之前返回到他们所在的最后一页.
我正在处理的应用程序通常用于公共计算机(例如图书馆或计算机实验室),我想阻止用户查看以前用户会话中的任何内容.
我正在使用Rails 3和Devise,顺便说一下,虽然看起来这个问题会出现任何框架或登录机制.
解决方案是使用标头/元标记来禁用浏览器缓存吗?有人知道解决这个问题的宝石或教程吗?
期待您的建议.
authentication ruby-on-rails browser-cache http-headers devise
我正在编写一个HTML5应用程序,它使用"带缓存的应用程序缓存".
但是,在我开发的过程中,我希望将其关闭.
我尝试从标记中删除manifest属性,并在清单文件中将所有内容切换到网络.
虽然它在第一次更新时确实更新了,但仍然从缓存而不是服务器读取所有子序列更新.
我可以看到HTML文件已更新,标签上不再有manifest属性,但它仍然从缓存加载.
一旦你设置它,我似乎无法弄清楚如何关闭它,所以这是我的问题:
有没有办法在Google Chrome中关闭"带缓存的应用程序缓存"?
我试图通过指定资源的到期来修改我的.htaccess文件.它适用于图像,但不适用于javascript文件.运行GTMetrix时,它仍然建议javascript文件需要过期.我试过"application/javascript"和"application/x-javascript",但无济于事.
不确定我做错了什么.
这是我的代码:
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/javascript "access 1 week"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
## EXPIRES CACHING ##
Run Code Online (Sandbox Code Playgroud) 在这里坚果.我正在开发一个rails应用程序,我正在使用twitter-bootstrap-rails gem以便在我的应用程序中包含Twitter Bootstrap样式.这个gem在app/assets/stylesheets中生成一个名为'bootstrap_and_overrides.css.less'的文件,我一直用它来修改一些引导变量并包含我自己的CSS覆盖.
一切都很好,直到今天.出于某种原因,我今天对此文件所做的更改将保存到文件中,但Rails仍在提供该文件的旧版本!我搜索过,发现文件中没有任何预编译版本(公共/资产中没有)...只有我修改过的资产/样式表中的那个.对于应用程序中的目录,一切看起来都很好,但是当我启动rails服务器,加载页面,并使用元素检查器查看样式表时,它使用旧版本的'bootstrap_and_overrides.css.less'我已删除的规则.我已经在我的浏览器中关闭了缓存,并在4种不同的浏览器中尝试了它,所以我很确定这不是浏览器缓存的结果.
rails资产管道似乎只提供不存在的文件版本!有没有人知道为什么会发生这种情况?
web-applications ruby-on-rails browser-cache asset-pipeline twitter-bootstrap
我试图让我的谷歌页面速度洞察评级为体面,但有一些外部文件,我想要缓存,以及任何人都知道什么是最好的方法来处理这个?
https://s.swiftypecdn.com/cc.js (5 minutes)
https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js (60 minutes)
https://pagead2.googlesyndication.com/pagead/osd.js (60 minutes)
https://www.google-analytics.com/plugins/ua/linkid.js (60 minutes)
https://hey.hellobar.com/…d5837892514411fd16abbb3f71f0d400607f8f0b (2 hours)
https://www.google-analytics.com/analytics.js (2 hours)
Run Code Online (Sandbox Code Playgroud) 我知道,使用Redux我有共同点store,当我改变我的位置时,例如我从/videos页面开始,但我仍然在我的videosreducer中获取了视频.因此,如果我决定返回我的videos页面,我会显示用户已经从我的商店加载了视频,并在需要时加载更多并存储它们.
但是如果React没有Redux我改变我的位置/videos,我获取一些视频,然后将它们存储在我的VideosPage组件的本地状态,然后回到这个页面,我已经没有视频了,应该从头开始获取它们.
我怎样才能缓存它们,是否可能?
PS:这是更多theoretical问题所以没有提供代码.
我用GWT编写了应用程序.它适用于客户端.但是,当我在我的应用程序中更改某些内容,重新编译然后部署到服务器和客户端访问我的应用程序时,他的浏览器没有获取应用程序的新版本,而是使用以前的缓存版本.这会触发RPC错误和其他问题.
如何在访问我的页面时强制客户端浏览器获取应用程序的新版本,如果它与服务器上的版本匹配,则使用缓存版本.
我正在使用ASP.NET WebApi并使用以下代码来阻止所有内容中的缓存:
public override System.Threading.Tasks.Task<HttpResponseMessage> ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext controllerContext, System.Threading.CancellationToken cancellationToken)
{
System.Threading.Tasks.Task<HttpResponseMessage> task = base.ExecuteAsync(controllerContext, cancellationToken);
task.GetAwaiter().OnCompleted(() =>
{
task.Result.Headers.CacheControl = new CacheControlHeaderValue()
{
NoCache = true,
NoStore = true,
MaxAge = new TimeSpan(0),
MustRevalidate = true
};
task.Result.Headers.Pragma.Add(new NameValueHeaderValue("no-cache"));
task.Result.Content.Headers.Expires = DateTimeOffset.MinValue;
});
return task;
}
Run Code Online (Sandbox Code Playgroud)
结果标题看起来像这样(chrome):
Cache-Control:no-store, must-revalidate, no-cache, max-age=0
Content-Length:1891
Content-Type:application/json; charset=utf-8
Date:Fri, 19 Jul 2013 20:40:23 GMT
Expires:Mon, 01 Jan 0001 00:00:00 GMT
Pragma:no-cache
Server:Microsoft-IIS/8.0
Run Code Online (Sandbox Code Playgroud)
在阅读了有关错误(如何阻止缓存中的chrome)之后,我添加了"no-store" .
但是,无论我做什么,当我做一些导航我远离此页面的东西,然后使用"后退"按钮时,chrome总是从缓存中加载:
Request Method:GET
Status Code:200 OK (from cache) …Run Code Online (Sandbox Code Playgroud) 以前,如果有新版本,我使用以下方法强制浏览器重新加载我的JavaScript文件.
<script src="common.js?version=1337"></script>
<script src="app.js?version=1337"></script>
Run Code Online (Sandbox Code Playgroud)
我的HTML是自动生成的(例如使用PHP),因此很容易实现自动化.
现在我想使用ES6模块并导入我的公共代码.我的HTML成为:
<script src="app.js?version=1337" type="module"></script>
Run Code Online (Sandbox Code Playgroud)
并app.js包含导入:
import {foo, bar} from './common.js';
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:我如何影响common.js新场景中的缓存?
我不想每次编辑时app.js都手动编辑common.js.如果可能的话,我也不想动态生成/预处理我的任何JavaScript文件.
browser-cache ×10
caching ×4
javascript ×3
.htaccess ×1
devise ×1
es6-modules ×1
forms ×1
gwt ×1
html ×1
html5 ×1
http ×1
http-headers ×1
optimization ×1
react-redux ×1
reactjs ×1
rest ×1