apache 如何显示一个php页面的加载程序?

yc0p9oo0  于 2023-01-05  发布在  Apache
关注(0)|答案(1)|浏览(145)

我有一堆.php页面,每一个都是一个html网页的回声。它需要大约一分钟左右的时间来完全处理和加载每个页面。我想在页面加载完成时向用户显示一个加载图像。
我已经想到了一种逻辑上的方法,比如首先加载一个图像,主要内容保持隐藏,而.php正在处理;一旦php加载完成,它可以回显一个元素,作为一个触发器javascript改变显示风格的主要内容从隐藏到块.但我不能执行它;因为我猜apache需要在显示任何输出之前完成php的加载。
我看到的另一个选择是使用 AJAX 改变整个页面和加载数据,但我有点懒,因为它将涉及重写所有的.php代码。
我希望有人能指导我做错了什么,或者有更有效的方法来完成这项任务。

u1ehiz5o

u1ehiz5o1#

一种策略是使用cookie和一个中间页面,将所有没有特定cookie的请求重定向到中间页面,在中间页面中我们设置cookie。
使用apache htaccess或其他服务器中的等效项,将不需要修改应用程序的页面。
在htaccess中,你检查cookie(例如alreadyloading)是否存在,如果不存在,你重定向到“loading.html”,在“loading.html”中,你设置alreadyloading=true,然后你重定向到原始的URL。
使用javascript在“loading.html”中进行重定向是很重要的,因为使用HTTP重定向将不会得到预期的结果。
在“loading.html”中,您显示加载图像,您必须设置cookie alreadyloading=true,然后使用onload事件重定向到原始URL,在onload中,您可以做一个小的延迟,或者图像(正在加载)将被冻结,而不会在某些浏览器中移动:

<script>
        window.onload = function() {
            setTimeout( function() {
                location.replace($ORIGIAL_URL.split('#')[0]);
            }, 60 );
        };        
    </script>

在cookie过期后,您可以根据需要设置“loading.html”在几天、几小时或几分钟内不重新加载。另一个选项是为每个URL设置一个cookie。
我在几个站点上有类似的实现。

相关问题