强制mediawiki squid缓存填满所有页面

时间:2015-11-12 19:13:00

标签: apache caching mediawiki squid

为了加快MediaWiki网站的速度,该网站的内容使用了大量模板,但是当模板完成工作时,其他网站几乎都有静态内容我想设置一个squid服务器 见

https://www.mediawiki.org/wiki/Manual:PurgeList.php

https://www.mediawiki.org/wiki/Manual:Squid_caching

然后自动填充squid服务器的缓存"通过使用脚本执行wget / curl调用,该调用将触及Mediawiki的所有页面。我的预期是,在这个程序之后,每个页面都在squid缓存中(如果我足够大),然后每个访问都将由squid完成。

我将如何运作? E.g:

  1. 如何查看我的配置?
  2. 我如何知道需要多少内存?
  3. 如何检查页面是否在squid3缓存中?
  4. 到目前为止我尝试了什么

    我首先找到了如何安装鱿鱼:

    我想出了我的ip地址xx.xxx.xxx.xxx(这里没有透露) 通过ifconfig eth0

    在/etc/squid3/squid.conf中我把

    http port xx.xxx.xxx.xxx:80 transparent vhost defaultsite=XXXXXX
    cache_peer 127.0.0.1 parent 80 3130 originserver 
    
    acl manager proto cache_object
    acl localhost src 127.0.0.1/32
    
    # Allow access to the web ports
    acl web_ports port 80
    http_access allow web_ports
    
    # Allow cachemgr access from localhost only for maintenance purposes
    http_access allow manager localhost
    http_access deny manager
    
    # Allow cache purge requests from MediaWiki/localhost only
    acl purge method PURGE
    http_access allow purge localhost
    http_access deny purge
    
    # And finally deny all other access to this proxy
    http_access deny all
    

    然后我配置了我的apache2服务器

    # /etc/apache2/sites-enabled/000-default.conf   
    Listen 127.0.0.1:80
    

    我添加了

    $wgUseSquid = true;
    $wgSquidServers = array('xx.xxx.xxx.xxx');
    $wgSquidServersNoPurge = array('127.0.0.1');
    

    到我的LocalSettings.php

    然后我重新启动了apache2并使用

    启动了squid3
    service squid3 restart
    

    并使用

    进行首次访问尝试
    wget --cache=off -r http://XXXXXX/mediawiki
    

    结果是:

    Resolving XXXXXXX (XXXXXXX)... xx.xxx.xxx.xxx
    Connecting to XXXXXXX (XXXXXXX|xx.xxx.xx.xxx|:80... failed: Connection refused.
    

1 个答案:

答案 0 :(得分:0)

假设Apache 2.x。

虽然没有Squid相关,但您可以仅使用Apache模块实现此目的。在这里查看mod_cache:https://httpd.apache.org/docs/2.2/mod/mod_cache.html

您可以简单地将其添加到Apache配置中,并要求Apache对渲染内容进行磁盘缓存。

您需要确保您的内容在生成的PHP响应中具有适当的缓存过期信息,MediaWiki应该为您解决此问题。

添加这样的缓存层可能没有预期的结果,因为该层不知道页面是否已更改,此处的缓存管理很困难,并且只应用于实际的静态内容。

Ubuntu的:

a2enmod cache cache_disk

Apache配置:

CacheRoot /var/cache/apache2/mod_disk_cache
CacheEnable disk /

我不建议您通过访问每个页面来预填充缓存。这只会导致休眠(不常用)页面占用宝贵的空间/内存。如果你仍然希望这样做,你可以看看wget:

Description from: http://www.linuxjournal.com/content/downloading-entire-web-site-wget
$ wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains website.org \
     --no-parent \
         www.website.org/tutorials/html/

This command downloads the Web site www.website.org/tutorials/html/.

The options are:

    --recursive: download the entire Web site.

    --domains website.org: don't follow links outside website.org.

    --no-parent: don't follow links outside the directory tutorials/html/.

    --page-requisites: get all the elements that compose the page (images, CSS and so on).

    --html-extension: save files with the .html extension.

    --convert-links: convert links so that they work locally, off-line.

    --restrict-file-names=windows: modify filenames so that they will work in Windows as well.

    --no-clobber: don't overwrite any existing files (used in case the download is interrupted and
    resumed).

更好的选择:Memcached

MediaWiki还支持将Memcached用作仅用于数据和模板的快速内存缓存服务。这不像Squid或Apache mod_cache这样的网站范围的缓存那么残酷。 MediaWiki将管理Memcached,以便任何更改立即反映在缓存存储中,这意味着您的内容将始终有效。

请参阅MediaWiki的安装说明:https://www.mediawiki.org/wiki/Memcached

我建议不要使用Apache mod_cache或Squid来完成此任务,而是安装Memcached并配置MediaWiki以使用它。