小甜饼吃多了会出现404错误

        最近在做一个在线数据管理的项目,基本流程是客户端A将数据上传到服务器,客户端B从服务器拿数据,服务器作为中转站来使用。由于数据量还是比较大的,而且本地的客户端拿到数据后也需要做一系列的操作,因此缓存是必不可少的。然后,我就是这么想的:既然都是在本地操作,那么就用COOKIE来当缓存好了,并且我还自认为这是一个比较标新立异的想法。

        但是,数据量很大,COOKIE的大小、数量都是有限的,于是我去网上看了一下COOKIE的具体限制:

 

        InternetExplorer现在cookie限制为每个域名50

        Firefox每个域名cookie限制为50个。

        Opera每个域名cookie限制为30个。

        Safari/WebKit貌似没有cookie限制。但是如果cookie很多,会导致错误发生。

 

        FirefoxSafari允许cookie多达4097个字节,包括名(name)、值(value)和等号。

        Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。

        InternetExplorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。

 

        恩,看来单个COOKIE的限制是4KB,对于我的项目来说肯定不够,因为我那一个条目就有16KB,总共有N多个条目。后来我权衡了一下,将数据条目做了适当的分割,然后就决定 32个COOKIE,每个COOKIE最大3KB 来储存数据缓存,这样可能不够直观,看看下面的COOKIE文件就可以:

       

            大家看一下,我的那个COOKIE是不是特别显眼,特别奇葩,它的身材绝对让它所有的小伙伴都自愧不如了,我也不管那么多,决定就用这个COOKIE做缓存了,因为它还没有超过浏览器域名下COOKIE的限制嘛

            之后测试运行的结果似乎一切正常,看来虽然这个COOKIE的体积是比较另类,但它确实发挥了作用。但接着测下去问题就暴露出来了:服务器直接给出了404错误。

            具体是这样的:我的这个COOKIE文件是通过服务器目录里的文件 server\buffer.html 文件创建的,当测试到一半时候,这个文件就变成了404页面,而且更奇怪的是,整个server目录里的所有页面通过浏览器访问时都变成了404页面,真是奇了怪,这个目录里的所有文件都毫发无损地好好地待在那儿呢,怎么会出现404?后来我又尝试将浏览器缓存(不包括COOKIE)清空,将服务器重启等办法,但是那个目录里的文件依然全部是404。最后,我抱着不甘心的心态将那个体积臃肿的COOKIE删掉后,问题就解决了,目录里的文件恢复正常。

            思考整个前因后果,服务器的逻辑应该没什么问题,很显然,客户端56KB的COOKIE才是罪魁祸首,这样一来,我使用COOKIE做缓存的计划便宣告破产。

            我觉得我当初用COOKIE做缓存的初衷是好的:这样可以将服务端的数据操作搬到本地来进行,如此就不受网速等外在因素影响,可以提高用户体验。但是目前浏览器操作本地文件的比较安全稳定的方法就只有COOKIE了,如果用JS操作本地文件之类肯定会出现权限问题,没有通用性,现在COOKIE计划宣告失败,只好将缓存的处理搬到服务器上了,唉~

 

可以先创建一个空字典,然后循环遍历每个购物清单,将其转化为键值对的形式,最后将所有的键值对合并到空字典中,具体实现如下: ``` shopping_list = [ ['面包', '黄油', '尿布', '啤酒'], ['咖啡', '糖', '小甜饼', '鲑鱼', '啤酒'], ['面包', '黄油', '咖啡', '尿布', '啤酒', '鸡蛋'], ['面包', '黄油', '鲑鱼', '鸡'], ['鸡蛋', '面包', '黄油'], ['鲑鱼', '尿布', '啤酒'], ['面包', '茶', '糖', '鸡蛋'], ['咖啡', '糖', '鸡', '鸡蛋'], ['面包', '尿布', '啤酒', '盐'], ['茶', '鸡蛋', '小甜饼', '尿布', '啤酒'] ] my_dict = {} for index, item in enumerate(shopping_list): key = f'{index + 1:03d}' # 键值对的标志符按照001,002的格式 value = ', '.join(item) # 将购物清单转化为字符串 my_dict[key] = value print(my_dict) ``` 输出结果为: ``` {'001': '面包, 黄油, 尿布, 啤酒', '002': '咖啡, 糖, 小甜饼, 鲑鱼, 啤酒', '003': '面包, 黄油, 咖啡, 尿布, 啤酒, 鸡蛋', '004': '面包, 黄油, 鲑鱼, 鸡', '005': '鸡蛋, 面包, 黄油', '006': '鲑鱼, 尿布, 啤酒', '007': '面包, 茶, 糖, 鸡蛋', '008': '咖啡, 糖, 鸡, 鸡蛋', '009': '面包, 尿布, 啤酒, 盐', '010': '茶, 鸡蛋, 小甜饼, 尿布, 啤酒'} ``` 其中,`enumerate()`函数用于同时获取购物清单的索引和元素,从而生成键值对的标志符。`join()`方法用于将购物清单转化为字符串,多个物品之间用逗号隔开,方便查看。最后将每个键值对合并到空字典中,得到了最终的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值