Drupal开发时如何使用远端图片减轻工作量

  如果你有遇到过较大规模的 Drupal 项目,但可能已经发现了当 files 目录过于巨大对开发所带来的巨大挑战。如何让开发服务器(或者你的个人电脑)与这些文件保持同步是件非常痛苦的事情,但如果不这样做,往往又会因为无法使用用户上传的文件或附件,使网站开发过程中的很多重要的问题无法被发现。

  要解决这个问题有非常多的办法,但要么非常慢,要么非常复杂。例如使用Drush命令或者使用脚本程序将网站的文件下载后再上传到本地开发环境,甚至有人会考虑使用FTP执行这样的操作(请千万不要这样做)。尽管这些办法都能达到效果,但我还是希望能够节约宝贵时间和硬盘空间。

  最开始我们找到了 Stage File Proxy 模块,它能够让 Drupal 将所有的文件请求都定向到线上服务器,即使网站是在本地运行时也可以有效工作。但是要让这个模块正常工作,需要对网站进行一些调整并安装额外的模块。所以,尽管这个模块可以解决问题,但我还是希望能有其它的方案。

  之后,我们发现可以使用 Apache 的 URL重写规则来满足需要——当Apache程序在处理连入的网页请求时,重写规则允许它对满足指定规则的URL地址进行修改——例如,它可以将访问本地 files 目录的请求重定向到线上的服务器。

  经过查找有关URL重写规则的帖子和教程,我们终于可以写出所需要的代码了。因为我使用 MAMP 进行开发,所以添加 Apache 配置代码片段比安装模块要简单得多。同时这个办法即不需要对修改网站设置,也不需启用新的模块。如果你不是使用 MAMP 作为开发环境,Apache重写配置代码的设置可能会略有不同。(译注:其实就是将以下配置代码片段粘贴到Apache网站配置部分)

  以下便是让 Drupal 开发时使用远程文件的示例代码:


### Apache Rewrite

RewriteEngine on

# Force image styles that have local files that exist to be generated.

RewriteCond %{REQUEST_URI} ^/sites/([^\/]*)/files/styles/[^\/]*/public/((.*))$

RewriteCond %{DOCUMENT_ROOT}/sites/%1/files/%2 -f

RewriteRule ^(.*)$ $1 [QSA,L]

# Otherwise, send anything else that‘s in the files directory to the

# production server.

RewriteCond %{REQUEST_URI} ^/sites/[^\/]*/files/.*$

RewriteCond %{REQUEST_URI} !^/sites/[^\/]*/files/css/.*$

RewriteCond %{REQUEST_URI} !^/sites/[^\/]*/files/js/.*$

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ http://www.example.com/$1 [QSA,L]

  如果你使用MAMP进行开发,打开MAMP,在高级面板的最下方找以“自定义虚拟主机设置”,将上面的代码粘贴进去后进行保存即可(注意将代码中的 example.com 修改成你自己的域名地址)。

  最后,只需要重启Aapche便可以让 Drupal 本地开发的站点直接使用远程的文件,而我也可以让节省下来的硬盘空间来放更多的猫咪图片了。

原文标题:Drupal开发时如何使用远端图片减轻工作量

原文地址:http://drupalct.org/drupal-development/use-remote-images-and-files-for-local-drupal-development.html

时间: 2024-10-14 09:10:46

Drupal开发时如何使用远端图片减轻工作量的相关文章

在做weex开发时使用leancloud文件上传

不同于移动端原生开发,当开发者使用weex移动开发时,使用第三方SDK比较棘手.因为第三方的JS SDK是无法直接拿来使用的,环境不同.必须使用原生SDK,下面我介绍一下自己是如何在weex开发时(安卓)使用leancloud的服务的. 首先去leancloud的安卓SDK下载页面,下载SDK,这里我只使用了最基础的SDK包 <img src="/uploads/default/original/2X/5/582ffee695e0192ae085f0bc0e033543b316f673.p

IOS开发系列--无限循环的图片浏览器

--UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件都介绍一遍确实没有必要,所谓授人以鱼不如授人以渔,这里会尽可能让大家明白其中的原理,找一些典型的控件进行说明,这样一来大家就可以触类旁通.今天我们主要来看一下UIScrollView的内容: UIView UIScrollView 实战--图片浏览器 UIView 在熟悉UIScrollView之前

AppleWatch开发入门八——Watch中图片缓存的处理

AppleWatch开发入门八--Watch中图片缓存的处理 由于iWatch在存储和性能上都和iPhone有着很大的差距,这就要求开发者对程序有更高的性能优化,下载与传输图像,在Watch操作中是一个非时的过程,因此,watchOS中为我们提供了一个缓存图片的框架,并且接口和使用都非常简单. WatchOS中缓存图片的方法封装在WKInterfaceDevice这个类中,其中添加图片进入缓存的方法如下: //添加一个UIImage对象进入缓存目录,设置name,当我们设置图片时,可以直接通过n

Android应用开发中三种常见的图片压缩方法

Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法.比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩). 一.质量压缩法 private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里

J2EE开发时的包命名规则

http://www.blogjava.net/paulwong/archive/2012/04/15/374675.html 转一个J2EE开发时的包命名规则,养成良好的开发习惯 代码编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯.代码编写规范使用范围:J2EE项目开发.包命名规范:目的:包的命名规范应当体现出项目资源良好的划分 servlet类所在包命名规范:公司名称.开发组名称.项目名称.web.servlet例如:net.linkcn.web.servle

程序员网站开发时应该注意的SEO问题

一.链接的统一性 搜索引擎排名最主要的因素就是网站内容和链接,假如网站内部链接不一致,在很大程度上直接影响着网站在搜索引擎中的排名.例如彩票专营店导航栏中的“首页”链接,程序员在开发时可能会有以下几种链接代码,1.<a href="http://www.cpzyd.com">首页</a> 2.<a href="/index.asp">首页</a> 3.<a href="/">首页<

Android开发时,那些相见恨晚的工具或网站!

本文来我在知乎话题Android开发时你遇到过什么相见恨晚的工具或网站?下的回答! 在实际Android开发过程确实会有很多相见恨晚的工具或网站出现,下面是我自己的一些分享. 1.源码网站 https://github.com/googlesamples Android系统每次推出一些新特性,Google都会写一些Demo放在Github上,对于想要了解新特性怎么玩的同学,肯定不能错过它. https://www.codota.com/ 如果你不知道一个Android的类怎么用,可以在Codot

golang的beego框架开发时出现的问题纪录

golang的beego框架开发时出现的问题纪录1.数据库并发时问题:[ORM]2017/02/20 23:44:05 -[Queries/default] - [FAIL / db.Query / 15.9ms] - [SELECT mp_wx_account.app_id, mp_wx_account.app_secret FROM mp_wx_develop INNER JOIN mp_wx_account ON mp_wx_account.app_id = mp_wx_develop.a

SSH整合开发时Scope为默认时现象与原理

1.前提知识 1)scope默认值 进行SSH整合开发时,Struts2的action需要用spring容器进行管理,只要涉及到类以bean的形式入到spring容器中,不管是xml配置还是使用注解方式进行配置,都会涉及到spring管理bean的scope,其一共有五种取值,而其默认值为singleton,也就是单例模型,所有对此bean引用为同一个对象. 2)action应为多例 struts2作为MVC中视图(View)层框架,其最主要任务就是接收用户请求,然后调用业务逻辑层进行处理,这种