标签: application-cache

如何使用JavaScript清除应用程序缓存(HTML5功能)?

我们的Web应用程序使用应用程序缓存(缓存清单)以脱机模式还原HTML页面和资源.HTML页面将sessionID作为URI中的参数.因此,在每次注销和登录操作之后,新的HTML页面将保存到应用程序缓存中,因为sessionId已在URI中更改.使用应用程序几周后,一些浏览器开始工作较慢.应用程序缓存的大小(在FF 3.6+上测试)大约为200Mb!每次注销后我们都会清除浏览器的LocalStorage,但是如何从Application存储中清除资源?

firefox html5 application-cache

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

window.applicationCache更新冻结浏览器 - 如何降低频率或强制它们由用户启动

我创建了一个Web应用程序,它缓存所有必要的代码和数据,以便通过applicationCache脱机使用.但是,每次应用程序启动时,它都会立即尝试检查更新.这会阻塞浏览器很长一段时间,即使它没有找到任何要更新的内容.这种行为对应用程序具有很大的破坏性(不应该在后台进行更新,无论如何?).只是检查阶段需要在移动设备上花费大量时间,如果它发现更新,所有下注都将关闭下载需要多长时间(b/c它必须重新下载所有文件) - 这也冻结了浏览器.

所以,我想知道:

  1. 有没有办法将applicationCache更新委托给共享的Web Worker?要么
  2. 有没有办法阻止所有applicationCache更新,直到用户特别想检查更新并按下一个按钮,通过applicationCache.update()启动更新?要么
  3. 还有其他方法可以减少检查更新所花费的时间吗?
  4. 应用程序缓存更新不应在后台异步运行吗?



编辑:清单文件上可能是一个精心构造的缓存控制头是答案吗?我会调查这个,但我希望有人可以给我更多关于这些更新的信息.谢谢.


UPDATE

好吧,我玩过标题,没有任何帮助.我开始赏金了.如果你能提供帮助,请做!

javascript html5 web-applications application-cache

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

缓存跨域资产时,Chrome应用程序缓存不会发送“ Origin”标头

我有一个想要加载和处理图像的应用程序。浏览器要求图像要么与应用程序起源相同,要么图像响应允许跨域访问。我的图像是通过CDN(AWS S3)提供的,它们被配置为Access-Control-Allow-Origin在请求带有期望的Origin标头时提供正确的响应标头:

GET /image.png HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, compress
Host: <aws host url here>
Origin: localhost:5000

HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Methods: GET, HEAD
Access-Control-Allow-Origin: *
Cache-Control: max-age=315360000, no-transform, public
Content-Length: 3333
Content-Type: image/png
Server: AmazonS3
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
Run Code Online (Sandbox Code Playgroud)

这可以正常工作,除了我的应用还具有脱机运行的额外要求。为此,我在应用程序缓存清单中列出了CDN资产网址:

CACHE MANIFEST

CACHE:
http://<host url here>/image.png
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,一旦从应用程序缓存中加载了资产,我就开始Cross-origin image load denied by Cross-Origin Resource Sharing policy 出现错误。

我已经了解到Chrome应该与缓存填充请求一起发送appcache清单来源,但是根据我在中的粗略探索chrome://net-internals,在我看来,这似乎没有发生。

chrome://net-internals/#events是发出缓存填充请求时看到的内容:

HTTP_TRANSACTION_SEND_REQUEST_HEADERS
--> GET /image.png HTTP/1.1
    Host: …
Run Code Online (Sandbox Code Playgroud)

google-chrome application-cache cross-domain cors html5-appcache

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

今日离线网络应用的最佳方法

我正在尝试构建一个需要脱机工作的Web应用程序.到目前为止,标准方法一直是使用浏览器的应用程序缓存.但是,似乎不推荐使用Application Cache,将来会从浏览器中删除它(请参阅https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache).建议使用服务工作者.但是,目前并非所有浏览器都完全支持Service Workers.

那么该怎么办?考虑到应用程序缓存和服务工作者的当前状态,今天构建脱机Web应用程序的最佳方法是什么?还有其他方法不太依赖于浏览器功能吗?

offline application-cache offline-caching web service-worker

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

在登录/注销方案中以编程方式清除HTML 5应用程序缓存

HTML 5离线逻辑封装在window.applicationCache对象中.但是,看起来无法以编程方式清除缓存数据,例如,当用户从系统注销时.有没有其他方法可以清除HTML 5应用程序缓存,除了生成空清单文件?

html5 application-cache

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

Chrome报告html5缓存清单mime类型不正确

我正在尝试为网站设置缓存清单,但运气不佳.这里有一个演示页面:http://www.matthewlehner.ca

我正在使用的HTML具有以下结构:

<!DOCTYPE html>
<html manifest="manifest.appcache">
</html>
Run Code Online (Sandbox Code Playgroud)

根文件夹中的.htaccess具有以下条目:

AddType text/cache-manifest appcache
AddType text/cache-manifest .appcache
Run Code Online (Sandbox Code Playgroud)

来自`curl -I http://www.matthewlehner.ca/manifest.appcache '的回复

HTTP/1.1 200 OK
Date: Sun, 11 Sep 2011 00:04:30 GMT
Server: Apache
Last-Modified: Sat, 10 Sep 2011 07:53:30 GMT
ETag: "18a84003-32-4ac9196f95280"
Accept-Ranges: bytes
Content-Length: 50
Content-Type: text/cache-manifest
Run Code Online (Sandbox Code Playgroud)

但是OS X 10.6上的Chrome开发人员报告了以下错误:

Application Cache Error event: Invalid manifest mime type (text/plain) http://www.matthewlehner.ca/manifest.appcache
Run Code Online (Sandbox Code Playgroud)

显然情况并非如此,但我该如何解决这个问题呢?是Chrome,.htaccess还是托管问题?

.htaccess html5 application-cache offline-caching mime-types

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

奇怪的html5清单重装

我在Chrome 5.0.375.99下的HTML5清单文件有一个奇怪的问题,但在Safari下一切似乎都运行正常.

当第一次使用第一次指定的清单文件加载页面时,我可以观察到使用Fiddler,清单中的所有文件都被加载,然后在其中途似乎再次获取清单文件.此时,将触发错误事件,并且applicationCache的状态为UNCACHED.

我尝试了以下内容

  1. 重启电脑
  2. 重新启动浏览器
  3. 检查缓存的文件数量是否超过5mb
  4. 通过执行HEAD检查清单文件中的文件是否有效
  5. 尝试使用不同的清单文件名

html5 manifest application-cache

3
推荐指数
1
解决办法
2998
查看次数

在缓存清单文件HTML5的FALLBACK部分中使用通配符

如何创建启用脱机的Web应用程序,以便在用户访问hxxp:// mywebsite /并且脱机时显示hxxp:// mywebsite/offline /.[我的网站上有大约100个不同的动态页面,因此我无法在缓存清单文件中对所有这些页面进行硬编码]

html5 offline web-applications application-cache

3
推荐指数
2
解决办法
4569
查看次数

如何在Firefox中专门禁用HTML5应用程序缓存

由于Firefox在使用HTML5应用程序缓存时提示用户存储数据,因此我想在Firefox中禁用它以避免提示通知.

一种方法是提供两个不同的HTML文件:一个用于Firefox,<html>另一个用于其他浏览器<html manifest=...>.

但出于效率目的,我想提供一个静态文件.

那么如何<html manifest=...>在Firefox中提供文件时禁用应用程序缓存?

firefox html5 web-applications application-cache

3
推荐指数
1
解决办法
1635
查看次数

何时清除iPhone应用缓存?

我正在开发一个应用程序,允许用户将语音(以及其他内容)记录到应用程序的Documents目录中.但是当我录制语音时,我正在录制到应用程序的缓存目录,然后在用户说"好了,保存这个"之后,然后我将它复制到Documents目录.到目前为止所有这些工作.但是,如果我尝试删除缓存中的数据文件,或者当我尝试移动它时,我会遇到问题.

所以我的问题是,我是否应该将数据保留在缓存中以便iOS处理它,或者我是否需要手动删除缓存中的文件.如果是这样,我将如何去做呢.这是我到目前为止的代码(不起作用)

    NSFileManager *fm = [NSFileManager defaultManager];
    NSString *directory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    NSError *error = nil;
    BOOL success = [fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", directory, currentEntry.audioFileURL] error:&error];
    if (!success || error) {
        // it failed.
        NSLog(@"it failed to delete!!! %@ %@", error, [error userInfo]);
    } else {
        NSLog(@"Deleted... yipee... !!!");
    }
Run Code Online (Sandbox Code Playgroud)

iphone application-cache avfoundation ios

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

HTML5中的应用程序缓存在Android PhoneGap应用程序中不起作用

我正在尝试在HTML5中使用Android PhoneGap应用程序中的应用程序缓存,但这不起作用,它对ApplicationCahce Events没有感觉.

function logEvent(event) {
        console.log(event.type);
    }

    window.applicationCache.addEventListener('checking', logEvent, false);
    window.applicationCache.addEventListener('noupdate', logEvent, false);
    window.applicationCache.addEventListener('downloading', logEvent, false);
    window.applicationCache.addEventListener('progress', logEvent, false);
    window.applicationCache.addEventListener('cached', logEvent, false);
    window.applicationCache.addEventListener('updateready', logEvent, false);
    window.applicationCache.addEventListener('obsolete', logEvent, false);
    window.applicationCache.addEventListener('error', logEvent, false);
Run Code Online (Sandbox Code Playgroud)

此外,此代码在iOS PhoneGap和Android Browser中运行,此链接用于支持的平台. 应用程序Cahce支持的平台

所以,任何建议都会有所帮助.

html5 android application-cache android-browser cordova

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

我可以在HTML5应用程序缓存清单中使用与协议无关的URL吗?

我们有许多网站使用相同的代码库来运行不同的网站,具体取决于所使用的域名,我们正在寻求使用HTML5应用程序缓存来提高这些网站的性能,以缓存诸如网络字体和其他大型网站之类的内容,很少更新的文件.

目前,我们使用HTTPS对完全限定的URL进行硬编码,以防其中一个网站使用SSL.我们的"静态"网站服务器可以处理HTTP和HTTPS,因此不要这样做:

CACHE MANIFEST
# Cache Version 3198.729

https://static.ourdomain.co.uk/fonts/webfont1.eot
https://static.ourdomain.co.uk/fonts/webfont1.ttf
https://static.ourdomain.co.uk/fonts/webfont1.woff
Run Code Online (Sandbox Code Playgroud)

我们希望能够这样做:

CACHE MANIFEST
# Cache Version 3198.729

//static.ourdomain.co.uk/fonts/webfont1.eot
//static.ourdomain.co.uk/fonts/webfont1.ttf
//static.ourdomain.co.uk/fonts/webfont1.woff
Run Code Online (Sandbox Code Playgroud)

这样做我们可能会遇到任何问题吗?

html5 application-cache

0
推荐指数
1
解决办法
292
查看次数

为什么localStorage不用于存储静态资源?

这个问题在逻辑上遵循这个问题:

HTML5应用程序缓存是否相关?

很明显,热门网站没有使用HTML 5应用程序缓存来保存静态资源.

只需检查<html>标记中的清单属性即可.它不在那里.

进一步研究HTML5 localStorage也没有被使用.

作为测试案例,我看了一下

  • www.google.com
  • www.twitter.com
  • www.facebook.com

只需进入控制台并输入

localStorage.
Run Code Online (Sandbox Code Playgroud)

并且控制台应该弹出一个键列表.

这些站点都没有将其静态数据保存到磁盘中吗?

为什么是这样?

对于没有改变的资源来说,打击网络似乎是浪费资源.

详细说明.如果单击"重新加载",该页面将重新下载静态资源.使用Google,您甚至可以在URL路径中看到"静态"一词.但是对于这个问题,我使用了这个词的概念意义.

javascript html5 application-cache local-storage

0
推荐指数
1
解决办法
1035
查看次数