window存在的一些问题!

本文提供了Azure Table存储服务的几个实用建议,包括调整最大连接数、禁用100-continue行为、关闭Context跟踪等。同时,还介绍了如何在Azure Web角色中正确配置自定义HTTP处理器及使用角色配置文件中的存储连接信息。

  1」。 Some Tips for table service.

  「1.1」 修改最大连接数,如果需要。

  Config file:

  

  

  

  

  

  代码:

  ServicePointManager.DefaultConnectionLimit = 24;

  「1.2」 Turn off 100-continue

  Config file:

  

  

  

  

  

  代码:

  ServicePointManager.Expect100Continue = false;

  「1.3」 关闭Context跟踪,如果用不上的环境(比如都是查询)

  context.MergeOption = MergeOption.NoTracking;

  「1.4」 合理利用PartitionKey & RowKey

  具体参见: More about “PartitionKey”&"RowKey“ in windows azure table storage

  <2> using customer httphandler in windows azure webrole, 在webrole中使用自定义HttpHandler.

  由于部署以后的webrole实际运行在IIS7上面,如果您配置的是:

  

  

  将会报错,正确的配置是在节点中。

  

  

  

  

  

  

  

  <3> 使用role配置文件里的storage连接信息创建client account时,使用以下代码:

  CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");

  出现以下错误:

  Exception: SetConfigurationSettingPublisher needs to be called before FromConfigurationSetting can be used.

  解决方案:

  在 public override bool OnStart()中加入以下代码:

  CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>

  {

  configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));

  RoleEnvironment.Changed += (anotherSender, arg) =>

  {

  if (arg.Changes.OfType()

  。Any((change) => (change.ConfigurationSettingName == configName)))

  {

  if (!configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)))

  {

  RoleEnvironment.RequestRecycle();

  }

  }

  };

  });

### window.cookiestorage 的浏览器兼容性分析 `window.cookiestorage` 并非标准的 Web API,而是开发者为了实现对 `localStorage` 的兼容性封装而创建的一个自定义对象。其目的是在不支持 `localStorage` 的旧版浏览器中,通过回退到 Cookie 来实现类似的功能[^4]。 以下是对 `window.cookiestorage` 浏览器兼容性的详细分析: 1. **现代浏览器** 在现代浏览器中(如 Chrome、Firefox、Edge 等),如果浏览器原生支持 `localStorage`,`window.cookiestorage` 会直接使用 `localStorage` 的功能,因此兼容性与 `localStorage` 相同[^1]。这意味着它可以在所有支持 HTML5 的浏览器中正常工作。 2. **旧版浏览器** 对于不支持 `localStorage` 的旧版浏览器(例如 IE 7 及更早版本),`window.cookiestorage` 会回退到使用 Cookie 来模拟 `localStorage` 的行为[^4]。这种情况下,存储的数据会被附加到 HTTP 请求头中,可能会导致性能下降和数据传输量增加。此外,Cookie 的大小限制为 4KB,远小于 `localStorage` 的 5MB 限制[^3]。 3. **IE 特殊情况** 在 IE 5 到 10 中,`window.cookiestorage` 可以利用 IE 自有的 `userData` 存储机制来替代 `localStorage`[^2]。然而,从 IE 11 开始,`userData` 被废弃,因此需要依赖 Cookie 或其他方式实现兼容性。 4. **跨浏览器一致性** 由于 `window.cookiestorage` 是一种封装方案,其行为可能因实现方式的不同而有所差异。开发者需要确保封装代码能够正确处理不同存储方式之间的切换,并且要考虑到 Cookie 和 `localStorage` 在作用域、生命周期等方面的区别[^3]。 ```javascript // 示例:一个简单的 window.cookiestorage 封装 window.cookiestorage = { setItem: function(key, value) { if (typeof localStorage !== 'undefined') { localStorage.setItem(key, value); } else { document.cookie = encodeURIComponent(key) + "=" + encodeURIComponent(value) + "; path=/"; } }, getItem: function(key) { if (typeof localStorage !== 'undefined') { return localStorage.getItem(key); } else { var cookies = document.cookie.split("; "); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i].split("="); if (decodeURIComponent(cookie[0]) === key) { return decodeURIComponent(cookie[1]); } } return null; } }, removeItem: function(key) { if (typeof localStorage !== 'undefined') { localStorage.removeItem(key); } else { document.cookie = encodeURIComponent(key) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/"; } }, clear: function() { if (typeof localStorage !== 'undefined') { localStorage.clear(); } else { var cookies = document.cookie.split("; "); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i].split("="); document.cookie = encodeURIComponent(cookie[0]) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/"; } } } }; ``` ### 注意事项 - 在使用 `window.cookiestorage` 时,需要注意 Cookie 的大小限制以及对性能的影响。 - 如果目标用户群体包含大量老旧浏览器用户,则需要测试封装代码在这些浏览器中的实际表现[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值