0

我有很多文本文件中的书籍。

我已经在网站上列出了这本书的索引。

理论是:从包含整本书的文本文件中加载该索引中的书的一部分。

书的索引(例如,我们有 3 个索引):

<ul>
   <li><a onClick="return LoadThis('a1')">INDEX-1</a><div id="loader1" ></div></li>
   <li><a onClick="return LoadThis('a2')">INDEX-2</a><div id="loader2" ></div></li>
   <li><a onClick="return LoadThis('a3')">INDEX-3</a><div id="loader3" ></div></li>
</ul>

JavaScript 代码:

var loadUrl = "http://www.website.com/books/the-book.php";

function LoadThis(link_anchor)
{
var loader="#loader"+link_anchor.substring(1);
$(loader).html(ajax_load).load(loadUrl+" #"+link_anchor);

$(loader).addClass('ajax-active');
}

The-Book.PHP 文件

<div id="a1"><p>Index-1 texts...</p></div>
<div id="a2"><p>Index-2 texts ....</p></div>
<div id="a3"><p>Index-3 texts ....</p></div>

问题: 负载通常还不错!并且它们的负载运行良好。但...

如果索引的数量和 The-Book.php 的文件大小越来越大,那么加载速度就会比小书慢。

问: 我的 AJAX LOAD 函数编程方法是标准方法吗?

有没有更好、更标准、更快的方法来做到这一点?

请帮我。

4

1 回答 1

3

使用.load()本身在任何方面都不是一个坏习惯,但在你的情况下它并不是很理想。

当您使用.load()获取页面并指定选择器来识别要插入的部分时,您可能会认为它只会下载文件的该部分。由于 jQuery 无法知道选择器在文件中的哪个位置(或者它是否在多个位置),即使您只想要它的第一个(或最后一个)部分,它也必须下载整个文件。

因此,如果您有一本大书(例如几百 KB)并且没有为您的书设置缓存,您将需要多次下载大量数据来填充页面上的所有部分。

如果您真的想要进行部分加载,那么您需要在硬盘驱动器上创建单独的文件并每次为每个部分加载正确的文件,或者您可以让您的 php 文件过滤结果并仅返回请求的部分。

如果您想采用使用 php 进行过滤的想法,那么您可以看看How do you parse and process HTML/XML in PHP? 有关解析 html/xml 的更多信息。

于 2013-11-04T08:07:38.127 回答