用XPath在PHP Web站点中显示Google Calendar事件
码样例遇到了另外一个问题:它在用户每次访问页面时都要求获得 Google Calendar 事件摘要。如果把这个样例放到 PHP 站点的侧栏中,访问者每次转到任意一个页面 ,代码都 将重新下载并解析摘要。考虑到日历可能不会每个小时或者甚至每天都更改,这样做是非常浪费的。如果 您的站点非常受欢迎并且每天吸引 1,000 或更多页面点击率(只有 20 至 30 个惟一用户的流行论坛即 可轻松达到这个点击率),则针对每次页面点击请求和处理摘要。Google 数据 API 有明确的服务条款, 说明不允许执行此类应用。如果不遵守服务条款,Google 可以并且可能将拦截您服务器的 IP 地址。在 更糟糕的情况下,Google 可以取消您的帐户。很明显,提倡使用一种更聪明的方法。
有若干个可以实现的策略使样例代码更聪明地在 Google API 服务条款许可范围内运行。这些策略全 都涉及缓存脚本所显示的信息以及仅当发生更改时才请求处理整个摘要。深入讨论缓存技术不在本文讨论 范围内,但是我将简要讨论缓存技术,让您了解可以改进脚本的方法。 一项技术涉及使用 HTTP 请求报头检查 Google 数据 API 摘要是否已更改。Google 数据服务将根据 返回信息中的 <atom:updated> 元素的值设置 Last-Modified 响应报头。脚本在第一次被调用时 可以将处理摘要所生成的输出保存到 HTML 文件中。脚本随后可以把 <atom:updated> 时间戳的值 存储到数据库记录中。下一次任何用户请求查看事件日历时,客户机都将检索时间戳并把它发送回 If- Modified-Since 请求报头中,以避免在它未发生更改的情况下再次检索摘要。 如果自 If-Modified-Since 标头中指示的时间后内容未发生更改,那么 Google 数据服务将返回一个 304 (Not Modified) HTTP 响应。由于这意味着事件数据未更改,因此脚本随后可以包括 先前生成的 HTML 文件。如果摘要已更改,那么 Google 数据服务将返回 200 (OK) HTTP 响应。在这种情况下,脚本 将为 HTML 文件重新生成新内容,将数据库记录设为 <atom:updated> 元素中的新时间戳值,并且 包括 新生成的 HTML 文件。 把单个时间戳保存到数据库中是非常多余的,但是 PHP 不像 Microsoft Active Server Page (ASP) 、Microsoft ASP.NET、Java servlet 和 JavaServer Page (JSP) 一样支持应用程序级变量,至少出厂 时不支持。类似的解决方案是使用共享内存。并不是所有的 PHP 安装都支持共享内存,因为它可能是安 全风险隐患。另一种可能的缓存备选方法(尤其当 PHP 应用程序在 Web 服务器集群中运行时)是 memcached,它是最初由 LiveJournal 的创建者开发的集群内存缓存服务,现在已经被 FaceBook 的开发 人员全面改进。 结束语 Google Calendar 提供了一个集中式 Web 应用程序前端,通过该前端,组织及其管理者可以不受限制 地为其成员和公众维护和发布事件日历。Google 数据 API 提供了 Atom 摘要和 Atom 发布协议以使用 Google Calendar 和几乎所有其他 Google 应用程序检索、查询、更新和创建事件和其他信息。 使用 XPath,可以通过查询 Google 数据 API 事件摘要并解析其条目以获得条目元素之间的相关详细 信息,自动与 Web 站点显示的最新事件保持同步。虽然 XPath 不是 PHP 工具包中速度最快的 XML API ,但是当您手上拥有详细记录的 XML 文档时它是其中最易于使用的。您可以使用缓存来减少 XPath 性能 相对较慢的影响。 本文配套源码 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |