【发布时间】:2012-10-23 22:54:54
【问题描述】:
我正在开发需要缓存某些请求的应用程序
所以我在 HTML5 缓存中苦苦挣扎
这是我的清单文件
CACHE MANIFEST
# 2d25a26de3a1148a2fa5e534325f84cca2184090174c6ba451451c54f71f52d6
assets/application.js
assets/application.css
assets/glyphicons/png/glyphicons_064_lightbulb.png
assets/jquery-mobile/ajax-loader.gif
assets/jquery-mobile/icons-18-white.png
application.manifest
NETWORK:
/project_show
/application.manifest
现在我在/projects_show 页面中有如下内容
<div data-role="header" class="header">
</div>
<div data-role="content" class="content">
</div>
<div data-role="footer" class="footer" style="text-align:center">
</div>
<script type="text/javascript">
<%= store_key %>
</script>
<script id="header" type="text/template">
<h1>Listing of {{ carName }}</h1>
</script>
<script id="content" type="text/template">
<span>{{ pageName }}</span>
</script>
<script id="footer" type="text/template">
<span> CopyRight © {{ user }} </span>
</script>
<script type="text/javascript">
$(document).ready(function() {
if (window.navigator.onLine) {
$.getJSON('/project/2.json',function(data) {
localStorage.setItem("acura",JSON.stringify(data));
var carTemplate = $('#header').html();
var pageTemplate = $('#content').html();
var footerTemplate = $("#footer").html();
$('div.header').html(Mustache.to_html(carTemplate, data));
$('div.content').html(Mustache.to_html(pageTemplate, data));
$('div.footer').html(Mustache.to_html(footerTemplate,data));
})
else {
var data = JSON.parse(localStorage.getItem("acura"))
var carTemplate = $('#header').html();
var pageTemplate = $('#content').html();
var footerTemplate = $("#footer").html();
$('div.header').html(Mustache.to_html(carTemplate, data));
$('div.content').html(Mustache.to_html(pageTemplate, data));
$('div.footer').html(Mustache.to_html(footerTemplate,data));
}
})
</script>
您可以看到这里的想法是,如果用户在线,则从服务器获取 json 响应,如果没有,则从 localStorage 获取数据
很遗憾,上述代码自原因以来无法正常工作
a) 缓存清单文件也在缓存ajax 请求
现在可以看到我没有要求 HTML 缓存清单缓存 json 请求
即/projects/2.json
谁能告诉我为什么会这样
如果将GET 请求修改为POST 请求,即a POST request to/projects/2.jsoninstead of GET,则上述代码可以正常工作
但这不是我想要的任何建议
FYI Manifest 确实正确地遵循了清单文件,因为我还注意到我的 /projects 正在获取缓存,即使没有在 manifest 中定义
【问题讨论】:
-
我也面临这个问题不知道是否可以通过
post解决谢谢
标签: ruby-on-rails html local-storage html5-appcache