0

还有另一个与此类似的线程已关闭并且其中没有任何有用的信息:https ://stackoverflow.com/questions/11955822/php-file-caching-vs-cache-through-htaccess

如果通过.htaccess进行缓存,是否有必要实现一个php缓存系统?这是我当前的 .htaccess 缓存:

<IfModule mod_headers.c>
    # Cache Media Files
    <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$">
        Header set Cache-Control "public"
        Header set Expires "Mon, 20 Apr 2015 20:00:00 GMT"
        Header unset Last-Modified
    </FilesMatch>

    # Cache JavaScript & CSS
    <FilesMatch "\.(js|css)$">
        Header set Cache-Control "public"
        Header set Expires "Mon, 20 Apr 2015 20:00:00 GMT"
        Header unset Last-Modified
    </FilesMatch>

    # Disable Caching for Scripts and Other Dynamic Files
    <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
        Header unset Cache-Control
    </FilesMatch>
</IfModule>

有了这个文件缓存,构建一个 php 缓存系统会进一步改善我的网站吗?或者在 .htaccess 中压缩数据并使用 php 进行缓存是否更有意义?我只是想了解哪种缓存方法可以更好地改善网站,或者是否建议同时使用这两种方法。

4

2 回答 2

1

对于静态文件,可以通过 HTML Headers 标签进行缓存,而 .htaccess 浏览器会将其缓存在本地机器中。

对于 .PHP 的动态内容,您可以缓存小部件、对象以减少对 mysql 数据库的查询调用。

你可以试试这个。例如,它在 600 秒内缓存 $products,而您的 PHP 只向数据库发送 1 个请求。如果您有 500 名在线访问者,您的页面仍然使用来自第一批访问者的 1 个查询来提供 500 名访问者。

<?php
    include("php_fast_cache.php");
    // try to get from Cache first.
    $products = phpFastCache::get("products_page");

    if($products == null) {
        $products = YOUR DB QUERIES || GET_PRODUCTS_FUNCTION;

        // set products in to cache in 600 seconds = 5 minutes
        phpFastCache::set("products_page",$products,600);
    }

    foreach($products as $product) {
        // Output Your Contents HERE
    }
?>

如果您使用的是 Wordpress,您可以看到所有缓存插件,它们通过 PHP(文件或 Memcache)缓存您的内容,并通过 .htaccess 缓存您的图像、css、js

我们需要他们两个一起来加速站点并节省带宽/CPU

于 2013-04-28T05:35:08.880 回答
0

您仅对静态文件进行客户端缓存。

PHP 中的缓存解决了一个完全不同的问题——应用程序的服务器端性能问题。因此,如果您的网站加载速度太慢或导致服务器负载过高,您应该使用它。

有许多策略如何实现服务器端缓存,由您决定最适合您的应用程序的策略。

例如,您可以缓存 SQL 查询结果,也可以缓存整个网页的 HTML 输出。当您的数据更改时,不要忘记缓存失效。

于 2013-02-03T09:01:56.797 回答