最有效的方式来节省"简单的webapp状态来解决bar / no后端问题

时间:2014-07-05 18:25:27

标签: web-applications urlencode

有一类简单的Web应用程序可以将您的工作“保存”到地址栏中,而无需在后端存储任何内容。两个例子:

TypeScript Playground

WebSequenceDiagrams.com

此功能的正确名称是什么?

最有效的方法是什么? TypeScript Playground实际上将代码复制到地址栏中,但效率不高。压缩数据怎么样?

EDIT1:我的数据是JSON格式。

EDIT2:我认为我的问题归结为什么样的压缩可以输出URL安全字符。

EDIT3:“保存”到URL而不是本地存储是用户可以复制/粘贴状态。想想一个被剪辑复制到SO答案的TypeScript Playground。

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

我认为您可以先使用http://pieroxy.net/blog/pages/lz-string/index.html压缩JSON字符串,然后使用内置的encodeURIComponent()函数对压缩字符串进行编码。

下载库并指定它,

<script language="javascript" src="lz-string.js"></script>

压缩和编码数据,

var string = JSON.stringify({attr: "This is my compression test."});
alert("Size of sample is: " + string.length);

var compressed = LZString.compress(string);
alert("Size of compressed sample is: " + compressed.length);

var getParam = encodeURIComponent(compressed);

解码时,首先使用decodeURIComponent()解码,然后使用LZString.decompress(compressed)解压缩。

答案 1 :(得分:0)

您可以使用简单的霍夫曼压缩和base64来编码和解码某些变量。我还用它来保存我的一些应用变量,如页面,下拉选择,复选框。将它压缩到a.k.a状态的一个地方也是有利的,你甚至可以将它保存到文件中并将其用作&#34;断点&#34;甚至创建档案。在ajax应用程序中,它还提供了应用程序的浏览器历史记录和更好的桌面体验。可能性是无止境。它是经验丰富的开发人员的最新技术,但我在现实生活中看不到很多。顺便说一句,我将它保存到隐藏的字段并下载我使用了一个特殊的用户。在地址栏中使用它可能是一种风险,可能只是为了ajax历史。

答案 2 :(得分:0)

是的,您可以使用散列算法或任何其他URL散列技术来编码URL中的Web应用程序状态。

但正如其他人已经说过,HTML5提供了更好的方法来保存您的应用程序状态。这是a good article about that

答案 3 :(得分:0)

http://pieroxy.net/blog/pages/lz-string/index.html

<强> LZString.compressToBase64()

compressToBase64生成ASCII UTF-16字符串,表示在Base64中编码的原始字符串。这些可以安全地在浏览器外传输,保证所产生的字符都不需要进行URL编码。可以用decompressFromBase64解压缩。这通过每个字符仅使用6位存储来工作。因此,所产生的琴弦比通过压缩产生的琴弦大166%。它仍然可以显着减少一些JSON压缩对象。