我使用flask建立了一个网站(www.csppdb.com).有时当我以一个用户身份登录时,注销,然后以另一个用户身份登录,我仍然会看到我登录的第一个用户的页面.刷新页面时会立即解决此问题.如果我没有弄错的话,我认为这被称为"缓存".有什么办法可以在网站级别禁用此功能,以便访问的每个页面都需要重新刷新?
这就像与朋友分享您的计算机.他登录Facebook,然后退出.现在你登录他的电脑,你看到他的个人资料......(尴尬).刷新页面后问题得到解决.
这是我的一些代码.我正在使用烧瓶登录,但后来我尝试"自己滚动"
from flask.ext.mysql import MySQL
import os
from flask import Flask, request, jsonify, session, url_for, redirect, \
render_template, g, flash
from data import *
from werkzeug import check_password_hash, generate_password_hash
import config
app = Flask(__name__)
mysql = MySQL()
app.config['MYSQL_DATABASE_HOST'] = os.environ['MYSQL_DATABASE_HOST'] if 'MYSQL_DATABASE_HOST' in os.environ else config.MYSQL_DATABASE_HOST
app.config['MYSQL_DATABASE_PORT'] = os.environ['MYSQL_DATABASE_PORT'] if 'MYSQL_DATABASE_PORT' in os.environ else config.MYSQL_DATABASE_PORT
app.config['MYSQL_DATABASE_USER'] = os.environ['MYSQL_DATABASE_USER'] if 'MYSQL_DATABASE_USER' in os.environ else config.MYSQL_DATABASE_USER
app.config['MYSQL_DATABASE_PASSWORD'] = os.environ['MYSQL_DATABASE_PASSWORD'] if 'MYSQL_DATABASE_PASSWORD' in os.environ else config.MYSQL_DATABASE_PASSWORD
app.config['MYSQL_DATABASE_DB'] = os.environ['MYSQL_DATABASE_DB'] …Run Code Online (Sandbox Code Playgroud) 我刚刚针对我们的网站运行了Google的Page Speed应用程序,其中一项建议是利用浏览器缓存.扩大这一点揭示了以下内容:
以下可缓存资源的生命周期较短:为以下资源指定将来至少一周的到期时间:
<>
<一些javascript文件的图片列表>
如何延长特定图像的"新鲜度"?
它是在IIS7.5上运行的ASP.NET项目
我正在研究加载静态文件时的浏览器性能,这种疑问已经到来.
有人说使用CDN静态文件(即谷歌代码,jQuery最新,AJAX CDN ......)对性能更好,因为它从另一个域请求而不是整个网页.
提高性能的其他方法是将
Expires标头设置为等于几个月后,强制浏览器缓存静态文件并减少请求.我想知道哪种方式是最好的,考虑性能以及我是否可以将它们结合起来.
先谢谢你们,我喜欢StackOverflow.
我创建了一个应用程序,vue-cli然后我构建了dist用于生产的文件夹。
该应用程序IIS使用 Flask 后端部署并且运行良好。
当我必须进行一些更改并且必须重做部署时,就会出现问题。在此之后,用户打电话给我,因为应用程序不起作用,但如果我清除了 chrome 缓存,应用程序又可以正常工作了。
我该如何解决这个问题?当我发布新的应用程序版本时,是否有自动清除 Chrome 缓存的方法?
谢谢
我的 dist 文件夹
部署:在 IIS 上复制和粘贴文件夹 dist
如果 dist 文件夹中的文件正确,可能问题出在 axios 缓存中?我也做了一些改变来休息 apis
从jQuery 1.5开始,根据XMLHTTPRequest的W3C规范,ajax方法现在可以通过调用success()处理程序正确处理304 Not Modified响应.这允许您的应用程序将请求视为成功,即使服务器实际上没有返回任何数据(因为您已经缓存了最新数据).
对于正常(未缓存)的GET请求,使用以下args调用成功处理程序:
对于缓存的GET请求,使用以下args调用成功处理程序:
(至少,这是在IOS 4.2中返回的方式,对于通过清单文件使用应用程序缓存的Web应用程序.我认为这对于大多数平台/浏览器上的常规浏览器缓存是一致的).
您可以看到,如果请求为200 OK,则仅填充"data"参数; 其中jqXHR.responseText总是填充数据,无论该数据是来自服务器(200 OK)还是来自缓存(304 Not Modified).
鉴于此,在大多数GET请求中,您的成功处理程序将要对您获得的数据执行某些操作,而不管它来自哪里,对于您的成功代码来说,最好总是使用jqXHR.responseText,而不是做这样的事情:
if ("notmodified" === status) {
// do something with jqXHR.responseText
} else {
// do something with data
}
Run Code Online (Sandbox Code Playgroud)
或者是否有一种情况,jqXHR.responseText 不会在成功处理程序中填充,但数据arg 会?
我必须通过我的代码库并更改所有成功处理程序(以前我在jQuery 1.4.2上,它总是返回数据,甚至从缓存中返回); 所以我只是想确保我以正确的方式处理它.(不要想达到目的,然后意识到我应该以另一种方式做到这一点).
tl; dr - iOS 5上的Safari缓存非常困难,它打破了我的网站.
我正在努力解决iOS 5中的Safari浏览器处理后向缓存的问题,他们称之为"页面缓存".这里描述的方式非常好地解释了这种行为.
很简单,页面缓存使得当你离开页面时我们"暂停"它,当你回来时我们按下"播放".
这会导致整个网站出现问题.使用后退按钮时,大多数其他浏览器会以加载状态显示页面.不是iOS 5上的Safari,它会显示您上次离开时的页面.一个简单的例子是禁用提交按钮.如果我使用Javascript来禁用提交按钮,然后提交表单,当您单击后面的提交按钮仍将被禁用.这在其他浏览器中是一个问题,包括Safari的桌面版本,但是通过将onload事件处理程序设置为空函数来解决它.我相信这告诉浏览器使缓存无效,因为在该函数中可能发生了一些重要的事情.这个hack似乎不适用于iOS 5上的Safari.
以下是问题归结为最基本的问题.加载test.html时,您将看到文本"原始文本".当您单击该链接时,该文本将更改为"更改文本 - 转发到下一页",然后在3秒内您将转发到test2.html.在所有浏览器中,一切都很好.在所有其他浏览器中,当您单击后退按钮时,您将看到的文本是"原始文本",但在Safari for iOS 5上,您将看到"更改文本 - 转发到下一页".
有关如何处理这个的任何建议?
这是一个简单的例子
的test.html
<script>
function changeText() {
el = document.getElementById("text");
el.innerHTML = "Changed text - forwarding to next page";
setTimeout("forward()",3000);
}
function forward() {
document.location.href = "test2.html";
}
</script>
<div id="text">Original Text</div>
<a href="Javascript:changeText()">Click Here</a>
<script>
window.onunload = function(){};
</script>
Run Code Online (Sandbox Code Playgroud)
test2.html
<div>Click back button</div>
Run Code Online (Sandbox Code Playgroud)
这是使用表单的第二个示例.这是我的应用程序如何工作的一个简单示例.当您导航回formtest2.asp时,您应该看到已发布的表单值,div文本应该是原始的.
formtest.asp
<form method="post" action="formtest2.asp">
Test: <input type="text" name="test"/>
<input type="submit" value="Submit"/>
</form>
Run Code Online (Sandbox Code Playgroud)
formtest2.asp
<script> …Run Code Online (Sandbox Code Playgroud) 我无法将图像文件缓存.我已尝试过在本网站和其他网站上找到的所有内容,但仍然无法让它们缓存.
我尝试过的Web配置设置
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
</staticContent>
<httpProtocol allowKeepAlive="true" />
<caching enabled="true" enableKernelCache="true">
<profiles>
<add extension=".png" policy="CacheUntilChange" />
<add extension=".jpg" policy="CacheForTimePeriod" duration="12:00:00" />
</profiles>
</caching>
Run Code Online (Sandbox Code Playgroud)
以下是其中一个图像的响应标题
Key Value
Response HTTP/1.1 200 OK
Cache-Control no-cache
Content-Type image/png
Last-Modified Thu, 16 Dec 2004 18:33:28 GMT
Accept-Ranges bytes
ETag "a1ca4bc9de3c41:0"
Server Microsoft-IIS/7.5
X-Powered-By ASP.NET
Date Fri, 18 May 2012 13:21:21 GMT
Content-Length 775
Run Code Online (Sandbox Code Playgroud) 我正在尝试将服务工作者集成到我的应用程序中,但我发现服务工作者即使在线也尝试检索缓存内容,但我希望它在这些情况下更喜欢网络.我怎样才能做到这一点?下面是我现在的代码,但我认为它不起作用.为简洁起见,省略了SW安装代码.
var CACHE_NAME = 'my-cache-v1';
var urlsToCache = [
/* my cached file list */
];
self.addEventListener('install', function(event) {
// Perform install steps
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('Opened cache');
return cache.addAll(urlsToCache);
})
);
});
/* request is being made */
self.addEventListener('fetch', function(event) {
event.respondWith(
//first try to run the request normally
fetch(event.request).catch(function() {
//catch errors by attempting to match in cache
return caches.match(event.request).then(function(response) {
// Cache hit - return response
if (response) {
return response;
}
});
})
);
}); …Run Code Online (Sandbox Code Playgroud) 像Firefox和Chrome这样的浏览器会拍摄被访问网站的屏幕截图,并可以在新标签上显示为"最近使用过的网站".
由于我的网站显示机密信息,我怎么能避免浏览器为"最近的网站"列表拍摄屏幕截图,或者至少将其限制在登录页面(如Facebook或银行网站正在做什么)?
我找到了一个可能的答案是否有W3C标准元标记来确定用于表示网站的封面图像?但它似乎仍然是一个不稳定的方法,我调查的银行网站显然没有使用它,所以我怀疑还有另一个(更好的?)解决方案.
任何的想法?我需要它至少为Firefox工作.
注意:网站正在使用HTTPS.在Chrome下,使用HTTPS似乎可以解决此问题,因为空白屏幕显示为预览.即使使用HTTPS,Firefox也会显示它.
更新: 在Mozzila的支持页面https://support.mozilla.org/en-US/kb/thumbnails-new-tab-page-missing-how-get-them-back上,他们声明如下:
注意:某些网站不允许生成和保存图像( - >缩略图)
不幸的是他们没有告诉他们怎么做......但是似乎有办法避免它......
更新2: 我真正想要的是该网站使用缓存的Javascript和图像,但不是缩略图.使用HTTPS可以解决它,除了因为Firefox的bug.
在Chrome中,可以从开发工具中清除Service Worker缓存.
我们怎样才能在Firefox中实现这一目标?
我到目前为止尝试过:
about:serviceworkersabout:preferences#privacy Ctrl + F5但它还在那里......
browser-cache ×10
caching ×4
firefox ×2
iis ×2
javascript ×2
asp.net ×1
browser ×1
cdn ×1
flask ×1
html ×1
iis-7.5 ×1
ios5 ×1
jquery ×1
performance ×1
python ×1
screenshot ×1
thumbnails ×1
vue.js ×1
vuejs2 ×1
web ×1
web-worker ×1