当前位置:
首页 > 技术站长 > 图片与网站分离:使用插件(1)

图片与网站分离:使用插件(1)

图片与网站分离:使用插件(1)【金佳吉国际网2014-10-23讯】几年前,金佳吉联盟的部分直属成员站就利用图片服务器将图片等附件与网站分离。在这次新型网站建设中,所有的成员站都实行图片等附件与网站分离。为了帮助部分成员站和会员对此项技术措施(两个方案)的理解,分两次转载有关文章。内容为,一是,自己搭建图片服务器;二是利用第三方图片服务器。

第1篇文章:WordPress远程附件支持插件——Hacklog Remote Attachment 1.2.8[增加对Windows Live Writer等支持。来源:Hacklog----荒野无灯的weblog

插件制作缘由

上次在小七的博客看到一基于SAE 的图库应用,小七说到一个问题:SAE的云豆远远不够用。于是我想,这样算来,用它的SAE,还不如自己另外加个空间,然后做个WP插件,负责把文件上传到远程服务器上面。这样,图片、附件与博客分离,还可以减轻本地服务器的压力。今天终于抽时间写下了这个插件的1.0.0版。

下一步计划:

把前台与后台分离,减少前台代码加载量。

插件简介

插件取名:Hacklog远程附件
WordPress 远程附件上传插件.Remote attachment support for WordPress.
安装完成后,到后台配置一下ftp服务器相关信息即可。
远程服务器只需要有FTP和www服务器(web服务器主要用于图片的显示)即OK.
远程的目录结构和本地的一样,支持多级目录。
上传附件(图片、音乐、其它文件),直接点击wp的上传按钮即可,过程与原来无异。
在后台可删除远程附件。
后台可统计远程附件占用的空间大小。
支持单用户博客、多用户博客。

插件目的

缓解本地服务器压力(空间容量,流量,请求)
同时,像图片等附件存储在远程服务器上面,有cookie-free domain的好处,可以加速页面显示(Yslow V2倒数第4条:Use cookie-free domains)
== Installation ==
1. Upload the whole fold `hacklog-remote-attachment` to the `/wp-content/plugins/` directory
2. Activate the plugin through the ‘Plugins’ menu in WordPress
3. Configure the plugin via `Settings` -> `Hacklog Remote Attachment` menu and it’s OK now,you can upload attachments(iamges,videos,audio,etc.) to the remote FTP server.

注意

FTP服务器上面的目录必须有写权限!
FTP服务器上要有web服务器(apache、nginx或其它),这样图片才能在博客显示,当然,这个条件一般都容易满足的。
用于存放图片的FTP服务器目录下的文件对于web服务器(apache、nginx或其它)必须要有可读权限,这样图片才能通过http协议访问。

如果你决定把所有附件都迁移到远程FTP服务器上面,那么还要做以下步骤:
1.把本地服务器(即你博客当前服务器)上的附件上传到远程服务器上面的对应目录(具体是哪个目录,要根据你在插件后台设置来)。
2.更新数据库,可以手动进入phpmyadmin更新,或者用插件的Tools.手动更新请运行以下sql语句:
[php]UPDATE `wp_posts` SET post_content=REPLACE(post_content,'到原来附件目录的绝对URL','到远程附件目录的绝对URL');[/php]
如:
[php]UPDATE `wp_posts` SET post_content=REPLACE(post_content,'ihacklog.com/wp-content/uploads/','static.ihacklog.com/wp-files/');[/php]

小技巧

对于apache服务器,为防止别人引用你的图片,可在远程服务器的附件目录下面放一.htaccess文件,内容示例如下,此文件可防止外站引用消耗流量,并且加上了文件缓存,节省流量:
[php]Options -Indexes
# BEGIN
<IfModule mod_rewrite.c>
# START Fang dao lian
#allow empty ref
RewriteCond %{HTTP_REFERER} !^$ [NC]
#if not my website
RewriteCond %{HTTP_REFERER} !^http://(.+.)?ihacklog.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+.)?google.com/reader/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?zhuaxia.com/ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp|mp3|wma|zip|rar|bz|gz|tar|doc|pdf)$ http://ihacklog.com/ihacklog.com.png [R,NC]
# END Fang dao lian
</IfModule>

<Files ~ "^.(htaccess|htpasswd)$">
deny from all
</Files>

# Image and Flash content Caching for One Month
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

#ETags
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch ".(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule> [/php]

已知BUG

如果你只是想在使用此插件之后的文件上传到远程FTP服务器上,而原来的文件在本地服务器继续保留,那么后台查看先前的附件时,其URL是不正确的。但这并不影响先前的日志中附件和图片的显示等。

更新到1.1.5请注意
1.1.5 增加了一个选项:HTTP Remote path (HTTP远程路径)
原来的Remote path (远程路径) 更改为 FTP Remote path (FTP远程路径)
如果你原来的版本使用没有问题,那么把HTTP Remote path (HTTP远程路径) 和  FTP Remote path (FTP远程路径) 填写相同的目录名即可。

插件下载

hacklog-remote-attachment.1.2.8.zip

图片与网站分离:使用插件(1):等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!