[Developers] Write grammar questions: question 4 -- when are links inserted?

Tim Kientzle tim at metaweb.com
Tue Jun 3 20:33:35 UTC 2008


David,

The mwLastWriteTime cookie is an innovation that we've come up with to  
try to balance the performance requirements of most read-only users  
with the need for users who are making changes to see immediate  
response to their changes.  This is handled through a special cookie  
that works transparently for most users but does occasionally confuse  
developers:

* The mwLastWriteTime cookie is updated automatically by the  
Freebase.com server whenever you write (including mqlwrite,  
interactive client, blob upload, or otherwise).  As long as you're  
working with a single application that tracks cookies (either a  
browser or another application), you will read the results of your own  
writes.

* By default, we cache pretty aggressively.  If you don't have a  
suitable cookie, we'll provide cached results if we can.  This gives  
faster responses to the majority of users who are readers.  Our cache  
timeouts vary depending on the particular request, but about 1 hour is  
typical.

* The only case where you'll see inconsistencies is if you have two  
applications.  For example, people see this when they do writes from a  
script and then try to see the results in their browser (or vice  
versa).  The problem here is that the script will get an updated  
cookie, but the browser has an old cookie.

* You can always get an up-to-date cookie from the "touch" service: / 
api/service/touch.  In the Freebase.com web GUI, press 'F8' to bring  
up the developer toolbar and click 'Refresh cache' to update your  
cookie.

* We use a cookie instead of an envelope parameter because the value  
needs to be set by and visible to the server.  Only cookies support  
this style of usage.

* The contents of the cookie are determined by the server and are  
subject to change.  Please do not try to synthesize it yourself.   
(Even today, the cookie actually has more information than just a  
timestamp; if you just synthesize a timestamp, you risk getting some  
very strangely inconsistent results.)

Let me know if this isn't clear enough.

Cheers,

Tim Kientzle



On Jun 3, 2008, at 12:44 PM, David Flanagan wrote:

> Will M: Could you clarify this for the rest of the list?  I can't find
> much documentation for this cookie.  What is the right thing to do  
> with
> it when writing apps that are not browser-based?  Should we always
> insert a synthetic cookie with the current time into our mqlread
> requests?  Or will the absence of the cookie ensure that we get the
> lastest results?
>
> And why is this a cookie rather than an envelope parameter, anyway?
>
> 	David Flanagan
>
> Will Fitzgerald wrote:
>> Will Moffat said it was that the 'mwLastWriteTime' cookie wasn't  
>> being
>> updated locally. He was right.
>>
>> Dr. Documentation, if you're reading this,  -- can you put this on
>> your list of things to document?
>>
>> Will F.
>>
>> On 6/3/08, Will Fitzgerald <will.fitzgerald at pobox.com> wrote:
>>> Using my own Ruby code, I'm trying to insert type links, but I'm
>>> wondering what, if anything, I'm doing wrong.
>>>
>>> For example:
>>>
>>> http://pastie.caboo.se/207795
>>>
>>> It appears, although the link looks like its being updated, the link
>>> isn't yet live to the final query. If I do the same list of  
>>> actions on
>>> the web-based MQL editor, there is no problem. Is there some
>>> difference with authenticating changes between the web-based editor
>>> and client software?
>>>
>>>
>>>
>>> --
>>> Will Fitzgerald
>>> weblog: <http://www.entish.org/willwhim>
>>> Stop US torture: <http://www.unsubscribe-me.org>
>>>
>>
>>
>
> _______________________________________________
> Developers mailing list
> Developers at freebase.com
> http://lists.freebase.com/mailman/listinfo/developers



More information about the Developers mailing list