我很好奇各个浏览器在过早删除旧的缓存文件之前会缓存多少MB/GB.你知道吗?对于奖励积分,将删除缓存文件的顺序(超出已过期的文件).
我有一个ASP.Net应用程序,它使用jQuery的AJAX POST方法来更新DOM.
除非用户在IE中手动刷新页面,否则一切正常.
如果他们进行了更改,则点击浏览器刷新按钮,然后再次执行这三个步骤,即使数据库已正确更新,也不显示他们刚刚输入的更新数据.
它显示原始数据.
他们必须完全关闭浏览器并重新打开它以查看更改.
这只发生在IE中.
FF和Chrome会在刷新时显示更改.
我在这里错过了什么?
我之前曾问过这个问题,并错误地认为我的问题并不存在(请参阅:缓存和 HTTPS)。我错了; 问题确实存在。
这是我的问题的描述:
200 OK. 当我重新加载页面(或转到另一个 HTTP 页面)时,资源-a 会获取一个304 Not Modified.200 OK. 当我重新加载页面(或转到另一个 HTTPS 页面)时,我会得到一个304 Not Modified.304 Not Modified.200 OK. 缓存副本发生了什么?我怎样才能让它缓存?这是标题的示例:
Request URL: https://styles.mydomain.com/assets/styles/main.css
Request Method: GET
Status Code: 200 OK
Request Headers
Accept: text/css,*/*;q=0.1
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 …Run Code Online (Sandbox Code Playgroud) 我可以在 PHP 中使用 filemtime 强制浏览器重新加载 css 吗?
$mtime = filemtime('style.css');
echo "\style.css?mod=" . $mtime;
Run Code Online (Sandbox Code Playgroud)
filemtime 是不是太慢了?
我打算在我的下一个项目中使用Laravel框架.到目前为止,我仍然陷入组织项目中静态内容的链接(图像,脚本等).例如,我有这个缓存选项(缓存所有静态文件,nginx):
location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
expires max;
}
Run Code Online (Sandbox Code Playgroud)
如何建立文件main.js的链接?如果文件被修改,如何告诉代理文件已过期?
在我目前的项目中,我有版本控制系统,它使用文件修改时间为文件生成唯一的前缀.所以链接就像http://site.com/22566223435/js/main.js下次当文件更改链接自动更改时.
Laravel实现此功能的最佳做法是什么?谢谢!
我有一个WebView控件,我想每次显示当前站点,但我认为WebView只显示该站点的缓存版本.我尝试了这里发现的一切,但似乎没有任何效果.我还试图从context.getCacheDir()中删除所有文件,但没有成功.我能做什么?
这是我在onCreate方法中的代码:
clearCache(this, 0);
setContentView(R.layout.webview);
deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");
mWebView = (WebView)findViewById(R.id.webview);
mWebView.setWebViewClient(new CenterWebViewClient(this));
mWebView.setWebChromeClient(new CenterWebChromeClient(this));
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setAppCacheMaxSize(1);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
String url = "https://www.exacmple.com";
if (url != null) {
Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
noCacheHeaders.put("Pragma", "no-cache");
noCacheHeaders.put("Cache-Control", "no-cache");
mWebView.loadUrl(url, noCacheHeaders);
}
Run Code Online (Sandbox Code Playgroud)
clearCache函数:
static int clearCacheFolder(final File dir, final int numDays) {
int deletedFiles = 0;
if (dir!= null && dir.isDirectory()) {
try {
for (File child:dir.listFiles()) {
//first delete subdirectories recursively
if (child.isDirectory()) {
deletedFiles += …Run Code Online (Sandbox Code Playgroud) 我已经写了一个class CacheControlFilter implements javax.servlet.Filter
to set header 来确保应用程序没有缓存。也已经在 web.xml 中完成了输入
<filter>
<filter-name> Cache controller filter</filter-name>
<filter-class>com.filter.CacheControlFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Cache controller filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
请建议我如何检查/测试这是否有效?如果您想了解更多信息,请告诉我。
我的想法很简单,在一些css文件中更改所有css文件并生成一个缩小的文件.然后告诉浏览器清除缓存.如果浏览器缓存中存在未更改的文件,则使用它 - 因此用户无需每次都重新下载.
我正在使用以下代码段来执行此操作.但是使用缓存的部分有点错误,大部分时间它都有效,但有时它会告诉浏览器使用缓存版本(因为没有变化),浏览器使用旧版本,用户必须进行客户端缓存刷新.
你能给我一些建议怎么做,所以每当发生变化时它会刷新客户端浏览器缓存,如果没有变化就只使用缓存?
$cssFiles = getCssFiles();
$fm = new FileMinifier(FileMinifier::TYPE_CSS);
$lastModified = $fm->lastModification($cssFiles);
$savedLastModified = DateUtils::convertToTimestamp($this->system->systemSettings['cssLastChange']);
$etagFile = md5('css-file');
header("Content-type: text/css");
header("Pragma: public");
header('Cache-Control: public');
header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastModified) . " GMT");
header("Etag: $etagFile");
// if there is a change - generate new minified css
if ($lastModified > $savedLastModified)
{
// take files minify them, save it and redirect to output, update last change time
...
}
// or use already generated
else …Run Code Online (Sandbox Code Playgroud) 对于我的网站,我有一个 Flask 服务器,为 webpack 生成的文件提供服务。不幸的是,当我更新文件时,由于浏览器缓存,网页通常在硬刷新(Ctrl-F5)之前不会更新。我希望网页在定期刷新后更新,因为大多数用户不知道硬刷新。在开发中,有一些方法可以绕过硬刷新,例如 webpack-dev-server。在生产中执行此操作的最简单方法是什么?
我有以下webpack.config.js文件:
var webpack = require('webpack');
var path = require('path');
module.exports = {
entry: ['react-hot-loader/patch', './js/main.js'],
output: {
filename: "./static/bundle.js",
},
resolveLoader: {
moduleExtensions: ['-loader']
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loaders: 'babel',
query: {
presets: ['react', 'es2015', 'stage-0']
}
},
{
test: /\.css$/,
loader: 'style-loader',
},
{
test: /\.css$/,
loader: 'css-loader',
query: {
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]'
}
}
]
}
};
Run Code Online (Sandbox Code Playgroud)
Flask 服务器正在提供如下所示的index.html文件:
<html>
<body> …Run Code Online (Sandbox Code Playgroud) 如何在使用Spring Boot创建的应用程序中为每个调用设置响应头?我想尝试使用过滤器来拦截所有调用,并能够设置响应头.我按照指南禁用浏览器缓存HTML5,但只设置请求标头,而不是总是.
browser-cache ×10
caching ×5
php ×3
css ×2
.htaccess ×1
ajax ×1
android ×1
asp.net ×1
browser ×1
filesystems ×1
filter ×1
firebug ×1
http-caching ×1
https ×1
java ×1
javascript ×1
jquery ×1
laravel ×1
no-cache ×1
python ×1
spring ×1
spring-boot ×1
webpack ×1
webview ×1