gpt4 book ai didi

manifest - 我的 HTML5 应用程序缓存 list 正在缓存所有内容

转载 作者:行者123 更新时间:2023-12-03 11:15:29 26 4
gpt4 key购买 nike

更新:

** 我在这个功能真的很新的时候发布了这个问题,我现在意识到这个功能不应该以这种方式使用,除非它是通过 JavaScript 使用的。但对于大多数犯同样错误和滥用此功能的初学者来说,这个 hack 似乎是一个很好的解决方案。如果你想缓存除 HTML 之外的所有内容,这应该用 JS 来完成,或者你可以使用下面的解决方案 **

我想我的问题归结为:
如果使用 HTML 标签的 manifest 属性引用 list 的文件属于 MASTER CACHE ENTRIES,那么您如何让动态页面使用 list 。

我的文件看起来像这样:

CACHE MANIFEST

CACHE:
# IMAGES:
/stylesheets/bg.jpg
/stylesheets/cont_bg.png
#and so forth..

#EXTERNAL
http://chat.mydomain.com/themes/images/panel_bg.png
http://chat.mydomain.com/themes/images/images_core.png

####################################
#STYLE SHEETS:
/stylesheets/min.css
/stylesheets/css_night.aspx

#####################################
#JAVASCRIPT:
/JAVASCRIPT/header_javascript.js

#EXTERNAL:
http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js
http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

FALLBACK:
/ /offline.php

NETWORK:
*

现在的问题是,一旦我浏览了一个不在 list 中的页面,当我第一次看到该页面并且没有缓存时,我的实际动态 php 文件(如 index.php)就会出现:
Adding master entry to Application Cache with manifest http://208.109.248.197/manifest.appcache

Application Cache Downloading event
Application Cache Progress event (0 of 28)
...
Application Cache Progress event (28 of 28)
Application Cache NoUpdate event

到目前为止一切顺利,直到我真正加载了一个页面,而 chrome 继续:
Application Cache UpdateReady event
Adding master entry to Application Cache with manifest http://mydomain.com/manifest.appcache

现在,正如您在最后一行中看到的那样,它将 index.php 添加到我的应用程序缓存中,我已通过访问 url 验证了这一点: chrome://appcache-internals/
它说:
Flags   URL Size (headers and data)
Explicit, http://mydomain/JAVASCRIPT/header_javascript.js 57.5 kB
Master, http://mydomain/home.php 51.2 kB
Master, http://mydomain/index.php 53.5 kB
Master, Fallback, http://mydomain/offline.php 49.4 kB

不应缓存 index.php 和 home.php 之类的内容。如果可能,我想告诉它不要缓存任何 html 扩展。但这是我从各种 RFC 中学到的东西,我相信:
一个在线白名单通配符标志,它要么是开放的,要么是阻止的。
The open state indicates that any URL not listed as cached is to be implicitly treated as being in the online whitelist namespaces; the blocking state indicates that URLs not listed explicitly in the manifest are to be treated as unavailable.

好吧,我想使用这些在线白名单通配符标志之一并将其设置为阻止,但我找不到更多解释或示例。
我还读到:
zero or more URLs that form the online whitelist namespaces.

These are used as prefix match patterns, and declare URLs for which the user agent will ignore the application cache, instead fetching them normally (i.e. from the network or locale HTTP cache as appropriate).

我也想使用一些这样的模式,但我又找不到任何文档。为什么没有 appcache list 文档的迹象,而且我去过的其他网站都没有使用它,因为我的 chrome appcache 目录没有显示!?!?

感谢您的时间!

最佳答案

这是我通过玩弄发现的一个黑客:

我还没有找到最终的答案,但从我了解到的情况来看, list 似乎并不意味着要在每一页上设置。我再次不确定,但这是我遇到的一个黑客。我有一个像 manifest.html 这样的页面

<html manifest="manifest.appcache"> 

我了解到没有这个的页面不会被添加到缓存中,但是如果在同一个域中,它们仍然会继续使用应用程序缓存。因此,如果您在每个页面的 iframe 中包含 manifest.html 一个纯 html 页面,它将不会缓存该页面,如 chrome 将不再输出:
Adding master entry to Application Cache with manifest 

但是如果您转到网络选项卡,您会看到它正在使用缓存
<iframe id='manifest_iframe_hack' 
style='display: none;'
src='temporary_manifest_hack.html'>
</iframe>

temporary_manifest_hack.html 的内容:
<!DOCTYPE HTML>
<html lang="en" class="no-js" manifest="manifest.appcache">
<head>
<meta charset="utf-8">
<title>Hack 4 Manifest</title>
</head>
<body></body>
</html>

关于manifest - 我的 HTML5 应用程序缓存 list 正在缓存所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com